Загрузка данных


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()