1

我是使用 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 键时如何让游戏重新开始到起始位置?我知道它与循环有关,我只是无法将手指放在什么上面。

非常感谢。

4

2 回答 2

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代码分成两部分,一个只需要在程序开始时运行(读取配置文件并设置诸如窗口系统之类的东西),第二个为每个新游戏重复(设置游戏状态)。

于 2012-12-10T13:50:46.680 回答
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
于 2012-12-10T13:50:25.633 回答