我想使用按钮 Yes!
可以再次开始游戏,而不是退出程序并定期进入。如何创建?
def game_over():
Game_over = True
while Game_over:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
#[...]
button.draw(450, 500, 'Yes!')
button.draw(720, 500, 'No!', beginning)
pygame.display.update()
clock.tick(FPS)
def game():
global health
Game = True
while Game:
clock.tick(FPS)
for event in pygame.event.get():
#[...]
if event.type == pygame.QUIT:
beginning = False
if health <= 0:
game_over()
#[...]
show_health()
button.draw(20, 80, 'Pause', pause)
pygame.display.update()
all_sprites.update()
def beginning():
Beginning = True
while Beginning:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
#[...]
mini_button = Button2(180, 120)
mini_button.draw(570, 200, 'PLAY', game)
mini_button.draw(570, 420, 'QUIT', QUIT)
pygame.display.update()
beginning()
pygame.quit()
最佳答案
您的方法的问题在于它是递归的。 beginning
调用game
,game
调用game_over
并且game_over
再次调用beginning
:
beginning
|
-> game
|
-> game_over
|
-> beginning
|
-> game
|
-> ...
重构您的代码并添加一个游戏状态变量和改变游戏状态的函数:
game_state = 'beginning'
def start_game():
global game_state
game_state = 'running'
def pause_game():
global game_state
game_state = 'pause'
def game_over():
global game_state
game_state = 'game_over'
def quit_game():
global game_state
game_state = 'quit'
创建一个游戏循环,根据游戏状态绘制不同的场景。按下某个键时,游戏状态会发生变化:
def main():
global game_state
while game_state != 'quit':
event_list = pygame.event.get()
for event in event_list:
if event.type == pygame.QUIT:
quit_game()
if game_state == 'beginning':
mini_button = Button2(180, 120)
mini_button.draw(570, 200, 'PLAY', start_game)
mini_button.draw(570, 420, 'QUIT', quit_game)
elif game_state == 'pause':
# [...]
elif game_state == 'running':
for event in event_list:
# [...]
if health <= 0:
game_over()
#[...]
show_health()
button.draw(20, 80, 'Pause', pause_game)
all_sprites.update()
elif game_state == 'game_over':
button.draw(450, 500, 'Yes!', start_game)
button.draw(720, 500, 'No!', quit_game)
pygame.display.update()
clock.tick(FPS)
main()
pygame.quit()
关于python - 如何重新开始游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70350824/