在alien_invasion.py中,我们需要确定游戏的哪些部分在任何情况下都应运行,哪些部分仅在游戏处于活动状态时才运行:
while True:
gf.check_events(ai_settings,screen,ship,bullets)
if stats.game_active:
ship.update()
gf.update_bullets(ai_settings,screen,ship,aliens,bullets)
gf.update_aliens(ai_settings,stats,screen,ship,aliens,bullets)
gf.update_screen(ai_settings,screen,ship,aliens,bullets)
在主循环中,在任何情况下都需要调用check_events() ,即便游戏处于非活动状态时亦如此。例如,我们需要知道玩家是否按了Q键以退出游戏,或单击关闭窗口的按钮。 我们还需要不断更新屏幕,以便在等待玩家是否选择开始新游戏时能够修改屏幕。其他的函数仅在游戏处于活动状态时才需要调用,因为游戏处于非活动状态时,我们不用更新游戏元素的位置。
现在,你运行这个游戏时,它将在飞船用完后停止不动。
2.7 小结一下
到目前为止,我们学习了:
- 如何在游戏中添加大量相同的元素,如创建一群外星人;
- 如何使用嵌套循环来创建元素网格,还通过调用每个元素的方法update() 移动了大量的元素; - 如何控制对象在屏幕上移动的方向,以及如何响应事件,如有外星人到达屏幕边缘;
- 如何检测和响应子弹和外星人碰撞以及外星人和飞船碰撞;
- 如何在游戏中跟踪统计信息,以及如何使用标志game_active 来判断游戏是否结束了。
下一章开始补充游戏的记分系统,冲鸭。
网友评论