Mark
这几日,在跟着《python入门到实践》一书,写一个“外星人入侵”的pygame游戏,本以为很简单(确实不难),但是却因为一个小问题困住了我好几天!茶不思饭不想,到底是哪里出了问题呀,今天终于找到了解决方案,可能有一些同学和我遇到的情况一样,所以在这里mark一下以共飨!
问题描述
为什么移动的外星人只有一列了?
为什么在静止的外星人是全的?
刚开始,我也是一头雾水,论坛里也有同学问到同样的问题,但是没有给出详细的解释
譬如这位同学@qq_43578746
@问题原址[link]https://ask.youkuaiyun.com/questions/706442
问题解析
说完了问题的描述,我们来看一下问题到底出在哪里?
实际上,我们通过对比问题的描述,可以很肯定的是,问题出在实现外星人移动的方法上
我们把几个和外星人移动的代码块贴上来分析一下。
先看下主函数中实现外星人移动的过程
import ···
def run_game():
''' 初始化游戏并创建一个屏幕对象 '''
pygame.init()
*---snip---*
# 创建一个外星人编组
aliens = Group()
# 创建外星人群
gf.create_fleet(ai_setting, screen, aliens, ship)
# 开始游戏的主循环
while True:
*---snip---*
gf.update_aliens(ai_setting, screen, aliens, ship)
gf.update_screen(ai_setting, screen, ship, aliens, bullets)
run_game()
看一下game_functions中和外星人移动相关的方法
import ···
*---snip---*
def update_aliens(ai_setting, screen