СРОЧНО ДАМ 30 БАЛЛОВ Проект «Метелики» Створіть проект гри, коли виконавець-сачок рухається за вказівником миші та ловить метелика за допомогою клавіші пропуск. Метелик з'являється y випадковому місці лугу і, коли його накриває сачок, він зменшується у розмiрi та зникає. У цей час до змінної «Метелик» додається и бал.
Answers & Comments
import turtle
import random
# налаштування екрану
screen = turtle.Screen()
screen.title("Метелики")
screen.bgcolor("green")
# створення сачка
sachok = turtle.Turtle()
sachok.shape("square")
sachok.color("black")
sachok.penup()
# налаштування розміру метелика
metelyk_size = 3
# створення функції для згенерування метелика
def create_metelyk():
metelyk = turtle.Turtle()
metelyk.shape("circle")
metelyk.color("blue")
metelyk.shapesize(metelyk_size)
metelyk.penup()
metelyk.goto(random.randint(-200, 200), random.randint(-200, 200))
return metelyk
# налаштування кількості метеликів
num_metelyks = 10
# створення списку метеликів
metelyks = []
for i in range(num_metelyks):
metelyk = create_metelyk()
metelyks.append(metelyk)
# функція для руху сачка за мишкою
def move_sachok(x, y):
sachok.goto(x, y)
# зв'язування функції з подією руху мишки
screen.onclick(move_sachok)
# функція для перевірки зіткнень метелика з сачком
def check_collision(metelyk, sachok):
x_dist = abs(metelyk.xcor() - sachok.xcor())
y_dist = abs(metelyk.ycor() - sachok.ycor())
if x_dist < 20 and y_dist < 20:
return True
else:
return False
# змінна для збереження балів
score = 0
# створення тексту для відображення балів
score_text = turtle.Turtle()
score_text.hideturtle()
score_text.penup()
score_text.goto(-200, 250)
score_text.write("Бали: {}".format(score), font=("Arial", 16, "normal"))
# основний цикл гри
while True:
for metelyk in metelyks:
# рух метелика
metelyk.forward(3)
# перевірка зіткнення з сачком
if check_collision(metelyk, sachok):
metelyk_size -= 1
metelyk.shapesize(metelyk_size)
metelyk.goto(random.randint(-200, 200), random.randint(-200, 200))
score += 1
score_text.clear()
score_text.write("Бали: {}".format(score), font=("Arial", 16, "normal"))