title: What am I doing wrong while trying to implement a restart button in PyGame?
body: <p>I am creating a Snake game for a school project. Something I am trying to implement is a Game Over screen when the player fails. I have the screen created and a button which can be clicked on the screen, but the button doesn't show up and it doesn't restart the game loop. Here is some of my code so far:</p>
  <pre><code>def game_loop(self):
          pygame.display.set_caption(&quot;Worm on a String&quot;)
  
          pygame.time.set_timer(WIN_UPDATE, 150)
  
          game_logic.background_music()
  
          # draw elements
          while game_running:
              for event in pygame.event.get():
                  if event.type == pygame.QUIT:
                      pygame.quit()
                      sys.exit()
                  if event.type == WIN_UPDATE:
                      game_logic.update()
  
                      userInput = pygame.key.get_pressed()
  
                      if userInput[pygame.K_LEFT]:
                          if game_logic.worm.direction.x != 1:
                              game_logic.worm.direction = pygame.math.Vector2(-1, 0)
                      if userInput[pygame.K_RIGHT]:
                          if game_logic.worm.direction.x != -1:
                              game_logic.worm.direction = pygame.math.Vector2(1, 0)
                      if userInput[pygame.K_UP]:
                          if game_logic.worm.direction.y != 1:
                              game_logic.worm.direction = pygame.math.Vector2(0, -1)
                      if userInput[pygame.K_DOWN]:
                          if game_logic.worm.direction.y != -1:
                              game_logic.worm.direction = pygame.math.Vector2(0, 1)
                  
              win.fill(pygame.Color('green'))
              game_logic.draw_elements()
  
              pygame.display.update()
              fps.tick(60)
  </code></pre>
  <pre><code>def failure(self):
          if not 0 &lt;= self.worm.body[0].x &lt;= cell_number - 1:
              self.game_over()
          if not 0 &lt;= self.worm.body[0].y &lt;= cell_number - 1:
              self.game_over()
          for block in self.worm.body[1:]:
              if block == self.worm.body[0]:
                  self.game_over()
  
      def game_over(self):
          global game_running
          while game_running:
              game_running = False
              over_screen = True
              while over_screen:
                  if game_running == False:
                      for event in pygame.event.get():
                          if event.type == pygame.QUIT:
                              pygame.quit()
                              quit()
                      win.fill('black')
                      title_text = &quot;GAME OVER&quot;
                      title_surface = title_font.render(title_text, True, 'red')  
                      title_rect = title_surface.get_rect(center = ((winX / 2), (winY - 400)))  
                      win.blit(title_surface, title_rect)      
                      
                      mouse = pygame.mouse.get_pos()
                      click = pygame.mouse.get_pressed()
  
                      if self.button.collidepoint(mouse):
                          if click[0] == 1:
                              print(&quot;click&quot;)
                              game_logic.game_loop() 
  
                      pygame.display.update()
                      fps.tick(15)
  </code></pre>
  <p>Any help would be appreciated!</p>