Проект Арканоїд полягає у створенні анімації рухомого м'яча, котрий має відбиватись від усіх сторін робочої області, окрім нижньої, де він має відбиватись від рухомої платформи. 


Для створення платформи, від якої має відбиватись м'ячик, створюється прямокутник 

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.


Для того, щоб м'яч відбивався від платформи, потрібно перевіряти їхні координати: якщо різниця між ними достатньо мала (до 10 пікселів), то вважати, що м'яч повинен відбиватись:

    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)

Остання зміна: Середа 27 квітня 2016 05:10 AM