已解决:为什么移动的外星人只有一列了?【python入门到实践13章】

已解决:为什么移动的外星人只有一列了?【python入门到实践13章】

Mark

这几日,在跟着《python入门到实践》一书,写一个“外星人入侵”的pygame游戏,本以为很简单(确实不难),但是却因为一个小问题困住了我好几天!茶不思饭不想,到底是哪里出了问题呀,今天终于找到了解决方案,可能有一些同学和我遇到的情况一样,所以在这里mark一下以共飨!

问题描述

为什么移动的外星人只有一列了?
为什么在静止的外星人是全的?
刚开始,我也是一头雾水,论坛里也有同学问到同样的问题,但是没有给出详细的解释
譬如这位同学@qq_43578746
@问题原址[link]https://ask.youkuaiyun.com/questions/706442
原问题查看上面网址

(图1 原论坛问题)

移动的外星人只有一列

(图2 移动的外星人只有一列)

静止的外星人是布满屏幕的

(图3 静止的外星人是布满屏幕的)

问题解析

说完了问题的描述,我们来看一下问题到底出在哪里?
实际上,我们通过对比问题的描述,可以很肯定的是,问题出在实现外星人移动的方法
我们把几个和外星人移动的代码块贴上来分析一下。
先看下主函数中实现外星人移动的过程

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
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值