微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过按“ r”按钮重新启动我的程序?

如何解决如何通过按“ r”按钮重新启动我的程序?

好的,我已经在Python 3.7.4和Pygame 1.9.6中创建了Space Invaders。我一切正常,没有错误或任何东西。我什至有一个暂停按钮可以很好地工作。只是在屏幕上显示“ GAME OVER”(游戏结束)文字表示您迷路了时。文本消失后,我想弹出一个窗口,要求再次播放。但是我只是不知道从哪里开始。我已经在How do I restart a program based on user input?寻求帮助,但是我不知道在哪里实现或在哪里实现。这是我在Pygame中创建的第一个真实项目/游戏。

代码

Action

由于“正在运行的循环”上方的所有内容都在不断加载,或者为了进行数据检索(如图像),图像的坐标以及背景音乐等。所以我希望它像暂停/取消暂停部分一样我按下“ r”时的代码我想在不退出程序的情况下重播该程序。因此,我非常感谢大家的帮助。谢谢大家。

解决方法

您必须在对象中创建函数或方法以重置数据并在每次游戏前使用它。您可以为此使用外部while循环。

# executed only once
pygame.init()
screen = ...
# .. load data ...
player = ...
enemy = ...

gameing = True
while gameing:
    
    # reset data before every game
    player.reset()
    enemy.reset()
    score = 0
    
    paused = False
    running = True
    
    while running:

        for event in pygame.event.get():
            if event.type == pygame.QUIT:  # exit game
                running = False
                gameing = False
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_r:  # restart game (but don't exit)
                    running = False
                    #gameing = True
                if event.key == pygame.K_x:  # exit game and program
                    running = False
                    gameing = False

        if game_over:  # restart game (but don't exit)
           running = False
           #gameing = True

您还可以按照命令中提到的@ Starbuck5进行组织-但随后您应使用running退出程序,但不要在游戏结束时退出游戏

def reset():
    global score,paused,running

    player.reset()
    enemy.reset()
    score = 0
    paused = False
    running = True

# executed only once
pygame.init()
screen = ...
# .. load data ...
player = ...
enemy = ...

# (re)set data before first game
reset()    

while running:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:  # exit game
            running = False
            gameing = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_r:  # restart game (but don't exit)
                #running = False  # DON'T DO THIS
                reset()

            if event.key == pygame.K_x:  # exit game and program
                running = False

   if game_over:  # restart game (but don't exit)
      #running = False  # DON'T DO THIS
      reset()

这需要为每个必须重置的变量使用global,这样在类中包含代码时可以更有用,并且可以使用self.代替global

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。