Загрузка данных
import turtle
import random
ok = turtle.Screen()
ok.title("Soberi yabloki!")
ok.bgcolor("lightgreen")
ok.setup(width=600, height=600)
ok.tracer(0)
ok.listen()
# Детализированная корзинка (составная)
korb = turtle.Turtle()
korb.speed(0)
korb.penup()
korb.goto(0, -250)
# Рисуем корзинку как набор частей
def risovat_korzinu():
korb.clear()
korb.penup()
# Основа корзинки (полукруг или прямоугольник со скруглением)
korb.goto(-35, -270)
korb.pendown()
korb.color("saddlebrown")
korb.begin_fill()
for _ in range(2):
korb.forward(70)
korb.right(90)
korb.forward(30)
korb.right(90)
korb.end_fill()
# Ручка корзинки (дуга)
korb.penup()
korb.goto(-25, -240)
korb.pendown()
korb.color("peru")
korb.width(4)
korb.setheading(60)
korb.circle(25, 120)
# Косая штриховка (прутья)
korb.penup()
korb.width(2)
korb.color("chocolate")
for x in range(-30, 35, 15):
korb.goto(x, -270)
korb.pendown()
korb.goto(x + 5, -240)
korb.penup()
# Нижняя линия корзинки
korb.goto(-35, -270)
korb.pendown()
korb.color("saddlebrown")
korb.width(3)
korb.forward(70)
korb.penup()
risovat_korzinu()
# Рисуем яблоко (детализированное с листиком)
yabl_ris = turtle.Turtle()
yabl_ris.speed(0)
yabl_ris.penup()
yabl_ris.goto(0, 0)
yabl_ris.pendown()
yabl_ris.begin_poly()
yabl_ris.circle(12) # тело
# Рисуем листик
yabl_ris.penup()
yabl_ris.goto(8, 12)
yabl_ris.pendown()
yabl_ris.setheading(60)
yabl_ris.forward(8)
yabl_ris.backward(8)
yabl_ris.setheading(-30)
yabl_ris.forward(6)
yabl_ris.end_poly()
forma_yabl = yabl_ris.get_poly()
turtle.register_shape("yabloko", forma_yabl)
yabl_ris.hideturtle()
# Гнилое яблоко (простое, тёмное)
gnil_ris = turtle.Turtle()
gnil_ris.speed(0)
gnil_ris.penup()
gnil_ris.goto(0, 0)
gnil_ris.pendown()
gnil_ris.begin_poly()
gnil_ris.circle(12)
gnil_ris.end_poly()
forma_gnil = gnil_ris.get_poly()
turtle.register_shape("gniloe", forma_gnil)
gnil_ris.hideturtle()
# Хорошее яблоко
yabl = turtle.Turtle()
yabl.shape("yabloko")
yabl.color("red")
yabl.penup()
yabl.speed(0)
yabl.goto(random.randint(-250, 250), 280)
# Гнилое яблоко
gnil = turtle.Turtle()
gnil.shape("gniloe")
gnil.color("darkgreen")
gnil.penup()
gnil.speed(0)
gnil.goto(random.randint(-250, 250), 280)
# Счет
och = 0
txt = turtle.Turtle()
txt.speed(0)
txt.color("darkblue")
txt.penup()
txt.goto(0, 260)
txt.write("Yablok: " + str(och))
skor_yabl = 5
skor_gnil = 4
def vlevo():
x = korb.xcor() - 25
if x >= -230:
korb.setx(x)
risovat_korzinu()
def vpravo():
x = korb.xcor() + 25
if x <= 230:
korb.setx(x)
risovat_korzinu()
ok.onkey(vlevo, "Left")
ok.onkey(vpravo, "Right")
def game_over():
txt.goto(0, 0)
txt.color("red")
txt.write("GAME OVER! :(", align="center", font=("Arial", 30, "bold"))
ok.update()
turtle.time.sleep(2)
turtle.bye()
def perem_yabl():
yabl.goto(random.randint(-250, 250), 280)
def perem_gnil():
gnil.goto(random.randint(-250, 250), 280)
while True:
ok.update()
yabl.sety(yabl.ycor() - skor_yabl)
gnil.sety(gnil.ycor() - skor_gnil)
if korb.distance(yabl) < 30:
och = och + 1
txt.clear()
txt.write("Yablok: " + str(och))
perem_yabl()
yabl.color("orange")
ok.update()
turtle.time.sleep(0.05)
yabl.color("red")
if korb.distance(gnil) < 30:
game_over()
break
if yabl.ycor() < -280:
perem_yabl()
if gnil.ycor() < -280:
perem_gnil()
turtle.time.sleep(0.01)
turtle.done()