如何使用Pygame创建“再次播放”选项

时间:2012-12-10 13:22:33

标签: python pygame restart

我是使用Python编程的新手。我一直在编写一本我发现的教程书,让游戏启动并运行,但后来决定我想要“再玩一次?”选项在最后。我可以通过按下“n”键让游戏退出,但无法解决如何重新启动游戏的问题。

以下是我认为给出麻烦的代码:

#player reaches treasure
if player_rectangle.colliderect(treasure_rectangle):

#display text
    screen.blit(text,(screen_width/2-195,screen_height/2-25))
    if event.type==pygame.KEYDOWN:
        if event.key==pygame.K_n:
            exit()

    elif event.key==pygame.K_y:


pygame.display.update()

我知道在elif事件之后需要做些什么,而且我已经尝试了所有我能想到的事情。我试图定义整个程序,然后调用它但是停止了整个程序的运行。我浏览过网站,但似乎无法想出答案。

有人可以轻松地帮助按下y键时如何让游戏重新启动到起始位置?我知道它与循环有关,我只是不能指责什么。

非常感谢。

2 个答案:

答案 0 :(得分:2)

目前还不完全清楚你的代码是如何组织的,所以我会非常一般。通常游戏是通过处理所有动作的“主循环”来实现的。在“伪”-python中:

def main_loop():
    while True:
        handle_next_action()
        draw_screen()

        if game_is_over():
            break

在开始循环之前,您通常会进行一些设置以使游戏状态达到您想要的状态:

def main():
    setup()

    main_loop()

    shut_down()

鉴于这些部分,您可以通过再次调用主循环代码setup来重置游戏(可能需要专门设计为可以多次运行):

def main_loop():
    while True:
        handle_events()
        draw_screen()

        if game_is_over():
            if play_again():   # new code here!
                setup()
            else:
                break

您可能希望将setup代码拆分为两部分,一部分只需要在程序开始时运行(读取配置文件并设置窗口系统等),第二部分为每个新游戏重复(设置游戏的状态)。

答案 1 :(得分:0)

要重新开始游戏,通常需要将所有变量重置为初始值(例如,生命数,分数,初始位置......)。

最好的方法是将所有初始化放在一个过程中:

def init():
    global score,lives     # use these global variables
    score=0
    lives=3

init()    # call init() to define and reset all values

while 1: # main loop
       ...
       elif event.key==pygame.K_y:
            init()            # restart the game