Кнопка "начать снова"

Я хочу реализовать в игре(сделанной с помощью pygame) кнопку "играть снова". Для этого, я решил, что можно использовать "цикл в цикле". Первый цикл служит для того, чтобы сделать кнопку начала игры, второй - основной цикл, а запускается по окончанию второго, т.е. когда игрок проигрывает. После начала 3 цикла должна появляться кнопка "играть снова", после нажатия на которую, по моей задумке, должен запускаться вновь 2 цикл, однако этого не происходит.

run = False
start = True

while start == True:
   window.fill((0, 0, 0))

   # draw btn
   window.blit(start_btn, (0, 0))

   # draw borders
   pygame.draw.rect(window, (255, 248, 220), [245, 35, 5, 810])
   pygame.draw.rect(window, (255, 248, 220), [245, 35, 800, 5])
   pygame.draw.rect(window, (255, 248, 220), [245, 840, 800, 5])
   pygame.draw.rect(window, (255, 248, 220), [1045, 35, 5, 810])

   # get cursor position for click
   pos = pygame.mouse.get_pos()
   x = pos[0]
   y = pos[1]

   for event in pygame.event.get():
      if event.type == pygame.QUIT:
         sys.exit(0)
      
      if event.type == pygame.MOUSEBUTTONUP and event.button == 1:
         if x > 500 and x < 800 and y > 295 and y < 580:
            run = True
            
   pygame.display.flip()

   # main cycle
   while run:
      # fill screen with black color
      window.fill((0,0,0))

      # draw a part of snake
      for x, y in snake:
         pygame.draw.rect(window, (124, 252, 0), (x, y, snake_size_x, snake_size_y))

      # draw food img
      window.blit(egg_img, (egg_spawn_x, egg_spawn_y))


      # draw borders
      pygame.draw.rect(window, (255, 248, 220), [245, 35, 5, 810])
      pygame.draw.rect(window, (255, 248, 220), [245, 35, 800, 5])
      pygame.draw.rect(window, (255, 248, 220), [245, 840, 800, 5])
      pygame.draw.rect(window, (255, 248, 220), [1045, 35, 5, 810])

      # EXIT from game
      for event in pygame.event.get():
         if event.type == pygame.QUIT:
            run = False
            start = False

      # fps
      fps.tick(10)

      # control movement
      keys = pygame.key.get_pressed()

      if keys[pygame.K_w]:
         dir_x, dir_y = 0, -1
      if keys[pygame.K_a]:
         dir_x, dir_y = -1, 0
      if keys[pygame.K_s]:
         dir_x, dir_y = 0, 1
      if keys[pygame.K_d]:
         dir_x, dir_y = 1, 0

      snake_x += snake_speed * dir_x
      snake_y += snake_speed * dir_y

      # we append every move to snake-list
      snake.append((snake_x, snake_y))
      snake = snake[-lenth_snake:]


      # What we are doing if food is eaten
      if snake_x == egg_spawn_x and snake_y == egg_spawn_y:
         # spawn new egg
         egg_spawn_x = random.randrange(370, 851, 40)
         egg_spawn_y = random.randrange(160, 641, 40)
         window.blit(egg_img, (egg_spawn_x,egg_spawn_y))

         # update snake-lenth
         lenth_snake += 1

   
      # What we are doing if we have collision
      if snake_x > 1050 or snake_x < 210 or snake_y > 840 or snake_y < 0:
         # run = False
         # start = False
         finish = True


         while finish:
            window.fill((0, 0, 0))

            # draw btn
            window.blit(gameOver_btn, (0, 0))

            # draw borders
            pygame.draw.rect(window, (255, 248, 220), [245, 35, 5, 810])
            pygame.draw.rect(window, (255, 248, 220), [245, 35, 800, 5])
            pygame.draw.rect(window, (255, 248, 220), [245, 840, 800, 5])
            pygame.draw.rect(window, (255, 248, 220), [1045, 35, 5, 810])

            # get cursor position for click
            pos = pygame.mouse.get_pos()
            x = pos[0]
            y = pos[1]

            for event in pygame.event.get():
               if event.type == pygame.QUIT:
                  run = False
                  start = False
                  finish = False

               if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
                  if x > 565 and x < 740 and y > 420 and y < 595:
                     points = 0
                     finish = False
                     
               # save all
               pygame.display.flip()

      # save all
      pygame.display.flip()

pygame.quit()

Ответы (0 шт):