我是使用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键时如何让游戏重新启动到起始位置?我知道它与循环有关,我只是不能指责什么。
非常感谢。
答案 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