首页 > 解决方案 > 如何让游戏重新开始?

问题描述

我正在制作一个游戏结束屏幕,它包括一个重新启动按钮。如果按下以将基本变量重置为 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()


标签: pythonpython-3.xpygame

解决方案


你可以像这样使用循环

 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

推荐阅读