Advertisement
AyanUpadhaya

DX Ball in Python Turtle Under Develop Game

Aug 26th, 2021
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.94 KB | None | 0 0
  1. # Dx ball game in python @ Ayan Upadhaya
  2. # Press 'r' to play and pause
  3. # under develop game
  4. # contact: ayanU881@gamil.com
  5.  
  6. import turtle
  7. import random
  8. import math
  9.  
  10. class Tiles:
  11.     def __init__(self,number):
  12.         self.number = number
  13.         self.tiles_list = []
  14.         self.space = 0
  15.     def CreateTiles(self,side,top):
  16.         for i in range(0,self.number):
  17.             self.tiles_list.append(turtle.Turtle())
  18.         for tile in self.tiles_list:
  19.             tile.shape('square')
  20.             tile.color('white','yellow')
  21.             tile.speed(0)
  22.             tile.shapesize(stretch_wid = 1,stretch_len=2)
  23.             tile.penup()
  24.             tile.setposition(side+self.space,top)
  25.             self.space+=45
  26.  
  27.     #for checking collision with ball and tiles
  28.     def checkCollision(self,t1,t2):
  29.         distance=math.sqrt(math.pow(t1.xcor()-t2.xcor(),2)+math.pow(t1.ycor()-t2.ycor(),2))
  30.         if distance<15:
  31.             return True
  32.  
  33.         else:
  34.             return False
  35.            
  36.    
  37.  
  38. class Paddle:
  39.     def __init__(self,master,shape,shapesize,color,speed,position):
  40.         self.master = master
  41.         self.shape = shape
  42.         self.shapesize = shapesize
  43.         self.color = color
  44.         self.speed = speed
  45.         self.position = position
  46.     def draw(self):
  47.         self.master.shape(self.shape)
  48.         self.master.shapesize(stretch_wid = self.shapesize[0],stretch_len = self.shapesize[1])
  49.         self.master.color(self.color)
  50.         self.master.speed(self.speed)
  51.         self.master.penup()
  52.         self.master.goto(self.position[0],self.position[1])
  53.  
  54.     def paddle_move_left(self):
  55.         x = self.master.xcor()
  56.         x-=20
  57.         self.master.setx(x)
  58.  
  59.     def paddle_move_right(self):
  60.         x = self.master.xcor()
  61.         x+=20
  62.         self.master.setx(x)
  63.  
  64.  
  65. class Ball(Paddle):
  66.     def __init__(self,master,shape,shapesize,color,speed,position,dx,dy):
  67.         super().__init__(master,shape,shapesize,color,speed,position)
  68.         self.dx = dx #sine
  69.         self.dy = dy #cosine
  70.  
  71.     def moveball(self):
  72.         self.master.setx(self.master.xcor()+self.dx)
  73.         self.master.sety(self.master.ycor()+self.dy)
  74.  
  75.  
  76. class TitleWriter:
  77.     def __init__(self,headeTitle,color,position):
  78.         self.headTitle=headeTitle
  79.         self.color = color
  80.         self.position = position
  81.         self.pen = turtle.Turtle()
  82.         self.pen.hideturtle()
  83.         self.pen.color(self.color)
  84.  
  85.     def writeTitle(self):
  86.         self.pen.clear()
  87.         self.pen.speed(0)
  88.         self.pen.penup()
  89.         self.pen.hideturtle()
  90.         self.pen.goto(self.position[0],self.position[1])
  91.         self.pen.write("{}".format(self.headTitle),align = "center",font=('Courier',18,'bold'))
  92.  
  93.  
  94.  
  95. #Game Class
  96. class Game:
  97.     def __init__(self,title,width,height,background,tracer):
  98.        
  99.         #window attributes
  100.  
  101.         self.window = turtle.Screen()
  102.         self.title = title
  103.         self.width = width
  104.         self.height = height
  105.         self.background = background
  106.         self.tracer = tracer
  107.         self.isPause = True
  108.         self.limitScore = 0
  109.         self.istileHide = False
  110.  
  111.  
  112.  
  113.         #objects
  114.         self.paddle = Paddle(turtle.Turtle(),'square',[1,10],'white',0,[0,-250])
  115.         self.ball = Ball(turtle.Turtle(),'circle',[1,1],'white',3,[0,0],1,-1)
  116.        
  117.         # tiles
  118.         self.tiles = Tiles(12)
  119.         self.tiles2 = Tiles(12)
  120.    
  121.  
  122.         #Title Writer
  123.         self.headTitle = TitleWriter('DX Ball','white',[0,260])
  124.  
  125.  
  126.  
  127.     #for pause and playing game press 'r'
  128.     def pause_play(self):
  129.         if self.isPause:
  130.             self.isPause = False
  131.         else:
  132.             self.isPause = True
  133.  
  134.  
  135.  
  136.     def run(self):
  137.         self.window.title(self.title)
  138.         self.window.setup(width = self.width,height =self.height)
  139.         self.window.bgcolor(self.background)
  140.         self.window.tracer(self.tracer)
  141.  
  142.         #create objects
  143.  
  144.         self.paddle.draw()
  145.         self.ball.draw()
  146.  
  147.         self.tiles.CreateTiles(-230,200)
  148.         self.tiles2.CreateTiles(-230,175)
  149.  
  150.         #write head title
  151.         self.headTitle.writeTitle()
  152.  
  153.         #event listener
  154.         self.window.listen()
  155.         self.window.onkeypress(self.paddle.paddle_move_left,"Left")
  156.         self.window.onkeypress(self.paddle.paddle_move_right,"Right")
  157.         self.window.onkeypress(self.pause_play,"r")
  158.        
  159.  
  160.         run = True
  161.         while run:
  162.  
  163.             if not self.isPause:
  164.                 self.ball.moveball()
  165.  
  166.                 #controll ball
  167.                 if self.ball.master.ycor() > 290:
  168.                     self.ball.master.sety(290)
  169.                     self.ball.dy *= -1
  170.  
  171.                 if self.ball.master.ycor() < -290:
  172.                     self.ball.master.sety(-290)
  173.                     self.ball.dy *= -1
  174.  
  175.                 if self.ball.master.xcor() > 390:
  176.                     self.ball.master.setx(390)
  177.                     self.ball.dx *= -1
  178.  
  179.                 if self.ball.master.xcor() < -390:
  180.                     self.ball.master.setx(-390)
  181.                     self.ball.dx *= -1
  182.  
  183.            
  184.  
  185.                 #paddle hitting by checking collision
  186.                 if (self.ball.master.ycor() < -235 and self.ball.master.ycor()> -250) and (self.paddle.master.xcor()+60 > self.ball.master.xcor() and self.paddle.master.xcor()-60 < self.ball.master.xcor())
  187.                     self.ball.dy *=-1
  188.  
  189.  
  190.                 #ball collision with tiles
  191.                 for tile in self.tiles.tiles_list:
  192.                     if self.tiles.checkCollision(tile,self.ball.master):
  193.                         tile.hideturtle()
  194.  
  195.                        
  196.            
  197.                 for tile2 in self.tiles2.tiles_list:
  198.                     if self.tiles.checkCollision(tile2,self.ball.master):
  199.                         tile2.hideturtle()
  200.                
  201.  
  202.  
  203.                 self.window.update()
  204.             else:
  205.                 self.window.update()
  206.  
  207.  
  208.  
  209. dxballGame = Game('Dx Ball',800,600,'black',3)
  210.  
  211. if __name__=="__main__":
  212.     dxballGame.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement