Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.85 KB | None | 0 0
  1. from tkinter import *
  2. root = Tk()
  3. root.title("ПингПонг")
  4.  
  5. def move_ball():
  6. c.move(BALL, BALL_X_CHANGE, BALL_Y_CHANGE)
  7.  
  8. def move_pads():
  9. PADS = {LEFT_PAD: LEFT_PAD_SPEED,
  10. RIGHT_PAD: RIGHT_PAD_SPEED}
  11. #перебираем ракетки
  12. for pad in PADS:
  13. #двигаем ракетку с заданной скоростью
  14. c.move(pad, 0, PADS[pad])
  15. #если ракетка вылезает за игровое поле возвращаем её на место
  16. if c.coords(pad)[1]<0:
  17. c.move(pad, 0, -c.coords(pad)[1])
  18. elif c.coords(pad)[3]>HEIGHT:
  19. c.move(pad, 0, HEIGHT - c.coords(pad)[3])
  20.  
  21. #функция реагирования на отпускание клавиш
  22. def stop_pad(event):
  23. global LEFT_PAD_SPEED, RIGHT_PAD_SPEED
  24. if event.keysym in "ws":
  25. LEFT_PAD_SPEED = 0
  26. elif event.keysym in ("Up", "Down"):
  27. RIGHT_PAD_SPEED = 0
  28.  
  29. def movement_handler(event):
  30. global LEFT_PAD_SPEED, RIGHT_PAD_SPEED
  31. if event.keysym == 'w':
  32. LEFT_PAD_SPEED = -PAD_SPEED
  33. elif event.keysym == 's':
  34. LEFT_PAD_SPEED = PAD_SPEED
  35. elif event.keysym == 'Up':
  36. RIGHT_PAD_SPEED = -PAD_SPEED
  37. elif event.keysym == 'Down':
  38. RIGHT_PAD_SPEED = PAD_SPEED
  39.  
  40. def main():
  41. move_ball()
  42. move_pads()
  43. root.after(30, main) #вызов самой себя через 30 миллисекунд
  44.  
  45.  
  46.  
  47.  
  48.  
  49. ########## Глобальные настройки ##########
  50. ##### Настройки окна #####'
  51. WIDTH = 1280
  52. HEIGHT = 720
  53. c = Canvas(root, width=WIDTH, height=HEIGHT, background="#003300")
  54. c.pack()
  55. c.create_line(WIDTH/2, 0, WIDTH/2, HEIGHT, fill='white')
  56.  
  57. ##### Настройки ракеток #####
  58. PAD_W = 10 #Ширина ракеток
  59. PAD_H = 100 #Высота ракеток
  60.  
  61. ##### Настройки мяча #####
  62. BALL_RADIUS = 35 #радиус мяча
  63. BALL_X_CHANGE = 20 #скорость по горизонтали
  64. BALL_Y_CHANGE = 0 #скорость по вертикали
  65.  
  66.  
  67. ##### Создание игровыхЪ элементовЪ #####
  68. BALL = c.create_oval(WIDTH/2-BALL_RADIUS,
  69. HEIGHT/2-BALL_RADIUS,
  70. WIDTH/2+BALL_RADIUS,
  71. HEIGHT/2+BALL_RADIUS, fill='pink')
  72. LEFT_PAD = c.create_line(PAD_W/2, 0, PAD_W/2, PAD_H, width=PAD_W, fill='pink')
  73. RIGHT_PAD = c.create_line(WIDTH-PAD_W/2, HEIGHT, WIDTH-PAD_W/2, HEIGHT-PAD_H, width=PAD_W,
  74. fill='pink')
  75. PAD_SPEED = 20 #скорость, с которой ездят ракетки
  76. LEFT_PAD_SPEED = 0 #скорость левой ракетки
  77. RIGHT_PAD_SPEED = 0 #скорость правой ракетки
  78.  
  79. c.focus_set()
  80. c.bind("<KeyPress>", movement_handler)
  81. c.bind("<KeyRelease>", stop_pad)
  82. main()
  83. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement