Как правильно реализовать рестарт игры python?
есть готовая игра, но не удаеётся нормально реализовать выход\перезапуск. Подскажите как сделать, чтобы игра закрываалсь в любой момент на крестик, а во время проигрыша можно было либо возродиться, либо выйти?
import pygame
import time
import random
spd = 15
window_x = 720
window_y = 480
black = pygame.Color(0, 0, 0)
white = pygame.Color(255, 255, 255)
red = pygame.Color(255, 0, 0)
green = pygame.Color(0, 255, 0)
blue = pygame.Color(0, 0, 255)
pygame.init()
pygame.display.set_caption('"Змейка"©2022')
game_window = pygame.display.set_mode((window_x, window_y))
fps = pygame.time.Clock()
snake_position = [100, 50]
snake_body = [[100, 50],
[90, 50],
[80, 50],
[70, 50]]
apple_position = [random.randrange(1, (window_x // 10)) * 10,
random.randrange(1, (window_y // 10)) * 10]
apple_spawn = True
direction = 'RIGHT'
change_to = direction
score = 0
def show_score(choice, color, font, size):
score_font = pygame.font.SysFont('Courier New', size)
score_surface = score_font.render('Счёт : ' + str(score), True, color)
score_rect = score_surface.get_rect()
game_window.blit(score_surface, score_rect)
def game_over():
my_font = pygame.font.SysFont('Courier New', 30)
game_over_surface = my_font.render(
'Игра окончена. Счёт : ' + str(score), True, white)
game_over_rect = game_over_surface.get_rect()
game_over_rect.midtop = (window_x / 2, window_y / 4)
game_window.blit(game_over_surface, game_over_rect)
pygame.display.flip()
time.sleep(2)
quit()
while True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
change_to = 'UP'
if event.key == pygame.K_DOWN:
change_to = 'DOWN'
if event.key == pygame.K_LEFT:
change_to = 'LEFT'
if event.key == pygame.K_RIGHT:
change_to = 'RIGHT'
if change_to == 'UP' and direction != 'DOWN':
direction = 'UP'
if change_to == 'DOWN' and direction != 'UP':
direction = 'DOWN'
if change_to == 'LEFT' and direction != 'RIGHT':
direction = 'LEFT'
if change_to == 'RIGHT' and direction != 'LEFT':
direction = 'RIGHT'
if direction == 'UP':
snake_position[1] -= 10
if direction == 'DOWN':
snake_position[1] += 10
if direction == 'LEFT':
snake_position[0] -= 10
if direction == 'RIGHT':
snake_position[0] += 10
snake_body.insert(0, list(snake_position))
if snake_position[0] == apple_position[0] and snake_position[1] == apple_position[1]:
score += 1
apple_spawn = False
else:
snake_body.pop()
if not apple_spawn:
apple_position = [random.randrange(1, (window_x // 10)) * 10,
random.randrange(1, (window_y // 10)) * 10]
apple_spawn = True
game_window.fill(black)
for pos in snake_body:
pygame.draw.rect(game_window, green,
pygame.Rect(pos[0], pos[1], 10, 10))
pygame.draw.rect(game_window, red, pygame.Rect(
apple_position[0], apple_position[1], 10, 10))
if snake_position[0] < 0 or snake_position[0] > window_x - 10:
game_over()
if snake_position[1] < 0 or snake_position[1] > window_y - 10:
game_over()
for block in snake_body[1:]:
if snake_position[0] == block[0] and snake_position[1] == block[1]:
game_over()
show_score(1, white, 'Courier New', 20)
pygame.display.update()
fps.tick(spd)