項(xiàng)目詳細(xì)介紹
在這個(gè)系列中暴构,將制作一個(gè)雷霆戰(zhàn)機(jī)游戲愕掏。
游戲結(jié)束
現(xiàn)在物遇,當(dāng)玩家用完生命時(shí)俩功,程序就會(huì)突然結(jié)束绍傲。這不是很友好抵赢。
所以將制作一個(gè)“Game Over”屏幕,并允許玩家再次玩唧取。
“Game Over”屏幕在2種情況下顯示:
- 游戲程序剛剛啟動(dòng)后
- 玩家3條命都用完
游戲結(jié)束的原因是游戲循環(huán)由running變量控制铅鲤,設(shè)置running為False玩家死亡時(shí)。現(xiàn)在想要跟蹤游戲狀態(tài)(顯示游戲結(jié)束或玩游戲)枫弟,將創(chuàng)建一個(gè)名為game_over的標(biāo)志邢享,并將其添加到游戲循環(huán)的頂部:
# Game loop
game_over = True
running = True
while running:
if game_over:
show_go_screen()
稍后會(huì)定義show_go_screen()。
目前還需要考慮別的事情淡诗。
當(dāng)游戲結(jié)束骇塘,通過(guò)屏幕進(jìn)入游戲時(shí)伊履,如果玩家再次選擇游戲,需要重置所有內(nèi)容 - 得分款违,流星唐瀑,玩家的生命等等。現(xiàn)在在游戲開(kāi)始前設(shè)置這些東西插爹,但現(xiàn)在要將它們移動(dòng)到show_go_screen()之后哄辣,show_go_screen()函數(shù)運(yùn)行結(jié)束后,它們會(huì)發(fā)生:
# Game loop
game_over = True
running = True
while running:
if game_over:
show_go_screen()
game_over = False
all_sprites = pygame.sprite.Group()
mobs = pygame.sprite.Group()
bullets = pygame.sprite.Group()
powerups = pygame.sprite.Group()
player = Player()
all_sprites.add(player)
for i in range(8):
newmob()
score = 0
還設(shè)置game_over到False赠尾,因?yàn)檎陂_(kāi)始一個(gè)新的游戲力穗。然后,可以改變玩家用完生命時(shí)發(fā)生的事情--- game_over = True
:
# if the player died and the explosion has finished playing
if player.lives == 0 and not death_explosion.alive():
game_over = True
游戲結(jié)束屏幕
現(xiàn)在只需要定義什么show_go_screen气嫁。因?yàn)樵谶@個(gè)例子中当窗,只做一個(gè)“屏幕”,只是要使用游戲的標(biāo)題寸宵,并提供一些很好的說(shuō)明如何玩:
def show_go_screen():
screen.blit(background, background_rect)
draw_text(screen, "雷霆戰(zhàn)機(jī)!", 64, WIDTH / 2, HEIGHT / 4)
draw_text(screen, "方向鍵移動(dòng), 空格鍵開(kāi)火", 22,
WIDTH / 2, HEIGHT / 2)
draw_text(screen, "按下任意鍵開(kāi)始游戲", 18, WIDTH / 2, HEIGHT * 3 / 4)
pygame.display.flip()
waiting = True
while waiting:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
if event.type == pygame.KEYUP:
waiting = False
show_go_screen()函數(shù)里面運(yùn)行一個(gè)死循環(huán)崖面,直到用戶(hù)按下任意鍵后,退出死循環(huán)梯影,結(jié)束函數(shù)巫员。