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


import turtle
import time
import random

class Snake:
   def __init__(self):
       self.segments = []
       self.create_snake()
       self.direction = "stop"
       self.tail_color = "orange"  # Цвет хвоста по умолчанию

   def create_snake(self):
       head = turtle.Turtle()
       head.shape("square")
       head.color("white")
       head.penup()
       head.goto(0, 0)
       self.segments.append(head)

   def move(self):
       # Двигаем тело змейки
       for index in range(len(self.segments) - 1, 0, -1):
           x = self.segments[index - 1].xcor()
           y = self.segments[index - 1].ycor()
           self.segments[index].goto(x, y)

       # Двигаем голову змейки
       if self.direction == "up":
           self.segments[0].sety(self.segments[0].ycor() + 20)
       elif self.direction == "down":
           self.segments[0].sety(self.segments[0].ycor() - 20)
       elif self.direction == "left":
           self.segments[0].setx(self.segments[0].xcor() - 20)
       elif self.direction == "right":
           self.segments[0].setx(self.segments[0].xcor() + 20)

   def add_segment(self):
       new_segment = turtle.Turtle()
       new_segment.speed(0)
       new_segment.shape("square")
       new_segment.color(self.tail_color)  # Устанавливаем цвет хвоста в зависимости от цвета еды
       new_segment.penup()
       self.segments.append(new_segment)

   def set_direction(self, direction):
       if direction == "up" and self.direction != "down":
           self.direction = "up"
       elif direction == "down" and self.direction != "up":
           self.direction = "down"
       elif direction == "left" and self.direction != "right":
           self.direction = "left"
       elif direction == "right" and self.direction != "left":
           self.direction = "right"

   def reset(self):
       for segment in self.segments:
           segment.goto(1000, 1000)  # Убираем сегменты с экрана
       self.segments.clear()  # Очищаем список сегментов
       self.create_snake()  # Создаем новую голову змейки
       self.direction = "stop"  # Сбрасываем направление

class Food:
   def __init__(self):
       self.food = turtle.Turtle()
       self.food.speed(0)
       self.food.penup()
       self.place_food()

   def random_color(self):
       return random.choice(['red', 'green', 'orange', 'yellow', 'purple'])

   def random_shape(self):
       return random.choice(['square', 'circle', 'triangle'])

   def place_food(self):
       self.food.shape(self.random_shape())  # Случайная форма еды
       self.food.color(self.random_color())  # Случайный цвет еды
       x = random.randint(-270, 270)
       y = random.randint(-270, 270)
       self.food.goto(x, y)

class Game:
   def __init__(self):
       self.delay = 0.1
       self.score = 0
       self.high_score = 0

       self.wn = turtle.Screen()
       self.wn.title("Snake Game")
       self.wn.bgcolor("blue")
       self.wn.setup(width=600, height=600)
       self.wn.tracer(0)

       self.snake = Snake()
       self.food = Food()
       self.pen = turtle.Turtle()
       self.pen.speed(0)
       self.pen.color("white")
       self.pen.penup()
       self.pen.hideturtle()
       self.pen.goto(0, 250)
       self.update_scoreboard()

       self.wn.listen()
       self.wn.onkeypress(lambda: self.snake.set_direction("up"), "w")
       self.wn.onkeypress(lambda: self.snake.set_direction("down"), "s")
       self.wn.onkeypress(lambda: self.snake.set_direction("left"), "a")
       self.wn.onkeypress(lambda: self.snake.set_direction("right"), "d")

   def update_scoreboard(self):
       self.pen.clear()
       self.pen.write(f"Score: {self.score} High Score: {self.high_score}", align="center", font=("candara", 24, "bold"))

   def play(self):
       while True:
           self.wn.update()

           # Проверка на столкновение со стенами
           if (self.snake.segments[0].xcor() > 290 or self.snake.segments[0].xcor() < -290 or
                   self.snake.segments[0].ycor() > 290 or self.snake.segments[0].ycor() < -290):