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

13.5.4 提高子弹的速度

如果现在尝试在游戏中射杀外星人,可能会发现子弹的速度不太合适(有点快或有
点慢),游戏感不好。当前,可通过修改设置让这款游戏更有意思、更好玩。
要修改子弹的速度,可调整settings.py中bullet_speed 的值。在我的系统中,
我把bullet_speed 的值调整到1.5,让子弹的速度快些:
settings.py
# 子弹设置
self.bullet_speed = 1.5
self.bullet_width = 3
--snip--
这项设置的最佳值取决于你使用的系统的速度,请找出适合自己的值。你也可以调
整其他设置。

13.5.5 重构_update_bullets()

下面来重构_update_bullets() ,使其不再执行那么多任务。为此,将处理子弹
和外星人碰撞的代码移到一个独立的方法中:
alien_invasion.py
def _update_bullets(self):
--snip--
# 删除消失的子弹。
for bullet in self.bullets.copy():
if bullet.rect.bottom <= 0:
self.bullets.remove(bullet)
self._check_bullet_alien_collisions()
def _check_bullet_alien_collisions(self):
"""响应子弹和外星人碰撞。"""
# 删除发生碰撞的子弹和外星人。
collisions = pygame.sprite.groupcollide(
self.bullets, self.aliens, True, True)
if not self.aliens:
# 删除现有的所有子弹,并创建一群新的外星人。
self.bullets.empty()
self._create_fleet()
我们创建了一个新方法_check_bullet_alien_collisions() ,用于检测子弹
和外星人之间的碰撞,并在整群外星人被消灭干净时采取相应的措施。这能避免
_update_bullets() 过长,简化了后续开发工作。
动手试一试
练习13-5:侧面射击2  完成练习12-6之后,我们给游戏《外星人入侵》添加
了很多功能。在本练习中,请尝试让练习12-6中飞船的功能与当前《外星人入
侵》中的类似。在屏幕右侧添加一群外星人(或让外星人的位置随机),并让
其向飞船移动。另外,编写代码让被子弹击中的外星人消失。

13.6 结束游戏

如果玩家根本不会输,游戏还有什么趣味和挑战性可言?如果玩家没能在足够短的
时间内将整群外星人消灭干净,导致有外星人撞到了飞船或抵达屏幕底端,飞船将
被摧毁。与此同时,限制玩家可使用的飞船数,在玩家用光所有的飞船后,游戏将
结束

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BinaryStarXin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值