我将如何重新启动游戏?

时间:2019-12-17 16:48:00

标签: python python-3.x pygame

我正在制作游戏结束画面,其中包含一个重新启动按钮。我按下了重新启动按钮,将其重置为False和0,但没有重启游戏,而是退出了。我不知道该变量是否不能再次设置为true,或者是否有代码语句重新启动包括变量在内的所有内容。有什么建议么? 所有代码都在def DrawGameOver中。


def DrawGameOver():
    win.blit (Overscreen, (0, 0))
    button1 = pygame.Rect(200, 400, 100, 50)
    pygame.draw.rect(win, [255, 0, 0], button1)
    if event.type == pygame.MOUSEBUTTONDOWN:
        mouse_pos = event.pos
        if button1.collidepoint(mouse_pos):
            player.gameover = False
            player.run = True
            player.grassdamage = 0
            player.damage1 = False
            player.damage2 = False
            player.damage3 = False
            player.damage4 = False
            player.damage5 = False
            player.damage6 = False
            player.damage7 = False
            player.damage8 = False
            player.score = 0
            time_now = 0
    Text = pygame.font.Font('freesansbold.ttf', 20)
    TextSurf, TextRect = text_objects("Restart?", Text)
    TextRect.center = ((250), (425))
    win.blit(TextSurf, TextRect)
    pygame.display.update()

while player.gameover:
    clock.tick (60)
    print (player.run, player.gameover)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            player.gameover = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                player.gameover = False
    DrawGameOver()


1 个答案:

答案 0 :(得分:1)

您可以使用像这样的循环

 while True: 
      intro()
      menu()
      game()
      gameover()

它应该一次又一次地运行游戏

如果函数要在结束游戏时返回False,则可以

 while True: 
      if not intro():
         break
      if not menu():
         break
      if not game():
         break
      if not gameover():
         break