14. Создания игры турель 4 часть

Стрельба по тарелкам
1. создать объекты-тарелки createPlates
2. двигать тарелки movePlates
3. проверить попадание в какую-нибудь тарелку checkCollision
4. проверить попадание в конкретную тарелку hit
Создание массива тарелок
def createPlates( N ):
--global plates # глобальный массив
--yPlates = 100 # у всех одна y-координата
--plates = [] # пока массив пустой
--for i in range(N):
----brushColor( randColor() )
----p = circle( randint(0,500), yPlates, randint(10,20))
----plates.append(p) # добавить в массив
...
createPlates( 5 ) # вызов процедуры

Движение тарелок
def movePlates():
--global plates # глобальный массив
--for p in plates: # для каждой тарелки
----moveObjectBy(p, -2, 0) # сдвиг на 2 влево
----x1,y1,x2,y2 = coords(p)
----if x1 < 0: # если вышла за границу...
------moveObjectBy(p, randint(500,600), 0)
Попадание в какую-нибудь тарелку
def checkCollision():
--global isFlying, bullet, plates
--for p in plates:
----if hit(p):
------moveObjectBy(p, randint(500,600), 0)
------moveObjectTo(bullet, x0-r, y0-r)
------isFlying = False # остановить снаряд
--------break # только одну тарелку за раз
Попадание снаряда в тарелку
def hit(p):
--global bullet
--x1,y1,x2,y2 = coords(bullet) # координаты снаряда
--xb = x1 + r # центр снаряда
--yb = y1 + r
--x1p,y1p,x2p,y2p = coords(p) # координаты тарелки
--xp = (x1p + x2p) / 2
--yp = (y1p + y2p) / 2
--Rp = (x2p - x1p) / 2
--d2 = (xb-xp)**2 + (yb-yp)**2
--return d2 <= (Rp+r)**2
Вызов функций
def update():
--global isFlying, bullet
--movePlates()
--if isFlying: # если летит...
----y = coords(bullet)[1]
----if y < 0: # если улетел...
------isFlying = False
------moveObjectTo(bullet, x0-r, y0-r)
----else: # летит дальше...
------moveObjectBy(bullet, 0, -5)
------checkCollision()
Блок основной программы
...# все функции
x0 = 200; y0 = 400; r = 3
createPlates( 5 )
brushColor("black")
bullet = circle(x0, y0, r)
isFlying = False
onKey(keyPressed)
onTimer(update, 30)
run()
Вывод счета
Создание метки
lbl = label("Счёт: 0",10,200,bg="white")

Изменение текста метки
lbl["text"] = "Счёт: " + str(score)
Задача
Собрать и запустить программу. Увеличить скорость снаряда.
Выполнить задание: для случая стрельбы слева направо (тарелки летят сверху вниз). Дорисовать танк, из дула которого вылетает снаряд.

Дополнить задание: за попадание в более мелкую тарелку игрок получает больше баллов

Сделать турель с вращающейся пушкой. Снаряд вылетает из ствола в том же направлении. За попадание в более мелкую тарелку игрок получает больше баллов.