我的GAME OVER屏幕在您的健康状况耗尽时正常运作。使用show_go_screen执行此GAME OVER屏幕。我试图将show_go_screen的方法复制到另一个屏幕的show_winning()函数中。我回到游戏时通过设置你的健康恢复正常来操纵这个节目获胜功能。然而,一旦你进入你的WIN屏幕并返回游戏,你就无法再次进入你的WIN屏幕。我已经在下面包含了我的播放器屏蔽的代码(确定何时有GAME OVER / YOUWIN事件)我还包括show_go_screen(用于GAME OVER)的方法和show_winning()方法的代码(这是为你赢得屏幕)。如果有人可以告诉我如何最好地修改我的代码以获得所需的结果。
if TrumpHits:
self.trump.shield -= 25
if self.trump.shield <= 0:
self.show_winning()
self.winning = True
if hits:
self.player.shield -= 20
if flyby:
self.player.shield -= 30
if self.player.shield <= 0:
self.playing = False
def show_go_screen(self):
# game over/continue
if not self.running:
return
bg = pg.image.load("GAMEOVERslimeCOVERAGE.png")
self.screen.blit(bg,(0,0))
self.draw_text("Press space bar to play again", 22, WHITE, WIDTH / 2, HEIGHT * 7 / 8)
HEIGHT / 2 + 40)
pg.display.flip()
waiting = True
while waiting:
self.clock.tick(FPS)
for event in pg.event.get():
if event.type == pg.QUIT:
waiting = False
self.running = False
if event.type == pg.KEYDOWN:
if event.key == pg.K_SPACE:
waiting = False
self.PlayMusic()
def show_winning(self):
# game over/continue
if self.winning:
return
bg = pg.image.load("TRUMPyouwin3d.png")
self.screen.blit(bg,(0,0))
self.draw_text("Press any key to play again", 22, WHITE, WIDTH / 2, HEIGHT * 7 / 8)
pg.display.flip()
waiting = True
while waiting:
self.clock.tick(FPS)
for event in pg.event.get():
if event.type == pg.QUIT:
waiting = False
self.running = False
if event.type == pg.KEYDOWN:
if event.key == pg.K_SPACE:
waiting = False
self.PlayMusic()
self.player.shield = 100
self.trump.shield = 100
def wait_for_key(self):
waiting = True
while waiting:
self.clock.tick(FPS)
for event in pg.event.get():
if event.type == pg.QUIT:
waiting = False
self.running = False
if event.type == pg.KEYUP:
waiting = False
答案 0 :(得分:1)
如果玩家或敌人的生命值低于零,请设置self.playing = False
,以便在循环时停止游戏。然后在最外面的while循环中调用游戏实例show_go_screen
的{{1}}方法。
g
在while g.running:
g.new()
g.show_go_screen()
方法中,blit背景图像和文本(我全局创建了BACKGROUND_IMG和FONT对象),翻转显示并启动另一个while循环,并使用事件循环检查用户是否想要退出或继续。如果用户退出,则将show_go_screen
设置为self.running
,以便外部while循环也将停止,因为其条件为False
。如果按下空格,您可以从此while g.running:
方法返回,而外部while循环调用show_go_screen
会重置游戏。
g.new()
如果您想制作更复杂的场景/状态,我建议您使用finite state machine like this。它实际上只是一个场景管理器类,它允许您在游戏的不同场景/状态之间切换。