Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- root = Tk()
- root.title("ПингПонг")
- def move_ball():
- c.move(BALL, BALL_X_CHANGE, BALL_Y_CHANGE)
- def move_pads():
- PADS = {LEFT_PAD: LEFT_PAD_SPEED,
- RIGHT_PAD: RIGHT_PAD_SPEED}
- #перебираем ракетки
- for pad in PADS:
- #двигаем ракетку с заданной скоростью
- c.move(pad, 0, PADS[pad])
- #если ракетка вылезает за игровое поле возвращаем её на место
- if c.coords(pad)[1]<0:
- c.move(pad, 0, -c.coords(pad)[1])
- elif c.coords(pad)[3]>HEIGHT:
- c.move(pad, 0, HEIGHT - c.coords(pad)[3])
- #функция реагирования на отпускание клавиш
- def stop_pad(event):
- global LEFT_PAD_SPEED, RIGHT_PAD_SPEED
- if event.keysym in "ws":
- LEFT_PAD_SPEED = 0
- elif event.keysym in ("Up", "Down"):
- RIGHT_PAD_SPEED = 0
- def movement_handler(event):
- global LEFT_PAD_SPEED, RIGHT_PAD_SPEED
- if event.keysym == 'w':
- LEFT_PAD_SPEED = -PAD_SPEED
- elif event.keysym == 's':
- LEFT_PAD_SPEED = PAD_SPEED
- elif event.keysym == 'Up':
- RIGHT_PAD_SPEED = -PAD_SPEED
- elif event.keysym == 'Down':
- RIGHT_PAD_SPEED = PAD_SPEED
- def main():
- move_ball()
- move_pads()
- root.after(30, main) #вызов самой себя через 30 миллисекунд
- ########## Глобальные настройки ##########
- ##### Настройки окна #####'
- WIDTH = 1280
- HEIGHT = 720
- c = Canvas(root, width=WIDTH, height=HEIGHT, background="#003300")
- c.pack()
- c.create_line(WIDTH/2, 0, WIDTH/2, HEIGHT, fill='white')
- ##### Настройки ракеток #####
- PAD_W = 10 #Ширина ракеток
- PAD_H = 100 #Высота ракеток
- ##### Настройки мяча #####
- BALL_RADIUS = 35 #радиус мяча
- BALL_X_CHANGE = 20 #скорость по горизонтали
- BALL_Y_CHANGE = 0 #скорость по вертикали
- ##### Создание игровыхЪ элементовЪ #####
- BALL = c.create_oval(WIDTH/2-BALL_RADIUS,
- HEIGHT/2-BALL_RADIUS,
- WIDTH/2+BALL_RADIUS,
- HEIGHT/2+BALL_RADIUS, fill='pink')
- LEFT_PAD = c.create_line(PAD_W/2, 0, PAD_W/2, PAD_H, width=PAD_W, fill='pink')
- RIGHT_PAD = c.create_line(WIDTH-PAD_W/2, HEIGHT, WIDTH-PAD_W/2, HEIGHT-PAD_H, width=PAD_W,
- fill='pink')
- PAD_SPEED = 20 #скорость, с которой ездят ракетки
- LEFT_PAD_SPEED = 0 #скорость левой ракетки
- RIGHT_PAD_SPEED = 0 #скорость правой ракетки
- c.focus_set()
- c.bind("<KeyPress>", movement_handler)
- c.bind("<KeyRelease>", stop_pad)
- main()
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement