Арканоїд
Проект Арканоїд полягає у створенні анімації рухомого м'яча, котрий має відбиватись від усіх сторін робочої області, окрім нижньої, де він має відбиватись від рухомої платформи.
Для створення платформи, від якої має відбиватись м'ячик, створюється прямокутник
xp0=10
yp0 = 450
xp1 = xp0+50
yp1 = yp0+10
deltaxp=5 # платформа рухається лише по горизонталі
elementp = canvas.create_rectangle(xp0,yp0,xp1,yp1,fill="green", tag='paddle')
Реакція на натискання кнопок на клавіатурі (стрілок), програмується командами:
canvas = Canvas(tk, width=500, height=500)
canvas.bind('<Left>', leftKey) # подія натискання клавіші "стрілка ліворуч" '<Left>'описана у функції leftKey
canvas.bind('<Right>', rightKey) # подія натискання клавіші "стрілка ліворуч" '<Right>'описана у функції rightKey
canvas.focus_set() # навести фокус на полотно та очікувати подій натискання клавіш
canvas.pack()
Обробка натискання певних клавіш відбувається у функціях (їх потрібно розмістити на початку проекту):
def leftKey(event): #функція натиснення стрілки ліворуч:
global xp0 # дозволити працювати з координатою хp0 (платформа)
xp0=xp0-deltaxp # змінити координату хp0 на значення deltaxp
canvas.move('paddle', -deltaxp,0) #змінити положення платформи
canvas.update() #оновити робочу область
Для забезпечення зупинки гри при торканні м'ячем нижньої межі (чи наближенні до неї) використовуються команди:
if y1 > 450:
break
Це означає, що якщо координата у1 більша за 450, відбувається зупинка циклу while True.
if y1 > 450:
if abs(x0-xp0)<10: # якщо різниця між координатами м'яча та платформи менша 10 пікселів
deltay = -deltay
else:
break
Завдання. Створити проект "Аканоїд".
Додати збільшення швидкості м'яча щоразу при торканні платформи - для ускладнення гри.
Додатково
Існують інші події, які можна запрограмувати, наприклад клацання мишкою (лівою кнопкою):
canvas.bind("<Button-1>", click)
У функції обробки цієї події можна використовувати координати точки, у якій відбулось клацання:
def click(event):
print ("clicked at", event.x, event.y)