Advertisement
boris-vlasenko

ах

Nov 12th, 2016
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.35 KB | None | 0 0
  1. from tkinter import *
  2. from random import randrange as rnd, choice
  3.  
  4. root = Tk()
  5. root.geometry('600x600+100+100')
  6. canv = Canvas(bg='white')
  7. canv.pack(fill=BOTH,expand=1)
  8.  
  9.  
  10. class Ball():
  11.     def __init__(self,x,y):
  12.         self.x = x
  13.         self.y = y
  14.         self.r = 12
  15.         self.vx = 0
  16.         self.vy = 5
  17.         self.color = 'orange'
  18.         self.id = canv.create_oval(self.x-self.r,self.y-self.r,self.x+self.r,self.y+self.r, fill= self.color, width = 0)
  19.         self.update()
  20.  
  21.        
  22.     def update(self):
  23.         canv.coords(self.id,self.x-self.r,self.y-self.r,self.x+self.r,self.y+self.r)
  24.         self.x += self.vx
  25.         self.y += self.vy
  26.         if self.x >= 550 or self.x <= 50:
  27.             self.vx *= -1
  28.        
  29.         if self.y > 600:
  30.             goal('down')
  31.            
  32.         if self.y < 0:
  33.             goal('up')
  34.  
  35.         if p_down.x <= self.x <= p_down.x + p_down.w and p_down.y <= self.y-self.r <= p_down.y + p_down.h:
  36.             self.vy *= -1
  37.         if p_up.x <= self.x <= p_up.x + p_up.w and p_up.y <= self.y+self.r <= p_up.y + p_up.h:
  38.             self.vy *= -1
  39.                    
  40.        
  41.         root.after(30,self.update)
  42.            
  43. class Platform():
  44.     def __init__(self,y):
  45.         self.y = y
  46.         self.h = 20
  47.         self.w = 80
  48.         self.x = 300-self.w/2
  49.         self.vx = 0
  50.         self.points = 0
  51.         self.id = canv.create_rectangle(self.x,self.y,self.x+self.w,self.y+self.h,fill = 'green')
  52.         self.update()
  53.    
  54.     def update(self):
  55.         self.x += self.vx
  56.         self.vx *= 0.8
  57.         canv.coords(self.id,self.x,self.y,self.x+self.w,self.y+self.h)
  58.         root.after(30,self.update)
  59.        
  60. def goal(side):
  61.     global mode
  62.    
  63.     if side == 'up':
  64.         p_down.points += 1
  65.     else:
  66.         p_up.points += 1
  67.     mode = 'goal_'+side
  68.     j.vx = 0
  69.     j.vy = 0
  70.     j.x = 300
  71.     j.y = 300
  72.    
  73.    
  74.     canv.delete('points')
  75.     canv.create_text(300,200,text=p_up.points, font = 'Tahoma 40', tag = 'points')
  76.     canv.create_text(300,400,text=p_down.points, font = 'Tahoma 40', tag = 'points')
  77.    
  78. def keyDown(event):
  79.     #print(event.keycode)
  80.     keys.add(event.keycode)
  81.        
  82. def keyUp(event):
  83.     keys.remove(event.keycode)     
  84.        
  85.        
  86. def update():
  87.     if 65 in keys:
  88.         p_up.vx = -5
  89.     if 68 in keys:
  90.         p_up.vx = 5
  91.  
  92.     if 37 in keys:
  93.         p_down.vx = -5
  94.     if 39 in keys:
  95.         p_down.vx = 5  
  96.        
  97.     if 32 in keys and 'goal' in mode:
  98.         if 'up' in mode:
  99.             j.vy = 5
  100.         if 'down' in mode:
  101.             j.vy = -5
  102.            
  103.  
  104.     root.after(30,update)  
  105.    
  106.        
  107. keys = set()   
  108. p_up = Platform(50)
  109. p_down = Platform(550)
  110. j = Ball(300,300)
  111. update()
  112.  
  113. root.bind('<Key>',keyDown)
  114. root.bind('<KeyRelease>',keyUp)
  115.  
  116.        
  117. mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement