Python工程师之Python编程:从入门到实践【4.0】

13.4 让外星人群移动

下面来让外星人群在屏幕上向右移动,撞到屏幕边缘后下移一定的量,再沿相反的
方向移动。我们将不断移动所有的外星人,直到外星人被全部消灭,或者有外星人
撞上飞船或抵达屏幕底端。下面先让外星人向右移动。
13.4.1 向右移动外星人群
为移动外星人群,将使用alien.py中的方法update() 。对于外星人群中的每个外
星人,都要调用它。首先,添加一个控制外星人速度的设置:
settings.py
def __init__(self):
--snip--
# 外星人设置
self.alien_speed = 1.0
再使用这个设置来实现update() :
alien.py
def __init__(self, ai_game):
"""初始化外星人并设置其初始位置。"""
super().__init__()
self.screen = ai_game.screen
self.settings = ai_game.settings
--snip--
def update(self):
"""向右移动外星人。"""


self.x += self.settings.alien_speed
self.rect.x = self.x

在__init__() 中添加了属性settings ,以便能够在update() 中访问外星人
的速度。每次更新外星人时,都将它向右移动,移动量为alien_speed 的值。我
们使用属性self.x 跟踪每个外星人的准确位置,该属性可存储小数值(见❶)。
然后,使用self.x 的值来更新外星人的rect 的位置(见❷)。
主while 循环中已调用了更新飞船和子弹的方法,现在还需更调用更新每个外星人
位置的方法:
alien_invasion.py

while True:
self._check_events()
self.ship.update()
self._update_bullets()
self._update_aliens()
self._update_screen()
需要编写一些代码来管理外星人群的移动,因此新建一个名为_update_aliens()
的方法。我们在更新子弹后再更新外星人的位置,因为稍后要检查是否有子弹击中
了外星人。
将这个方法放在模块的什么地方都无关紧要,但为确保代码组织有序,我将它放在
方法_update_bullets() 的后面,以便与while 循环中的调用顺序一致。下面
是_update_aliens() 的第一版:
alien_invasion.py
def _update_aliens(self):
"""更新外

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BinaryStarXin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值