《Python编程从入门到实践》(第十三章.外星人)

1.向右移动外星人 P243

def update_aliens(aliens):
	"""更新外星人群中所有外星人的位置"""
	aliens.update() #方法update()是在alien类中定义的

对编组aliens调用方法update(),这将自动对每个外星人调用方法update().

2.检测子弹与外星人碰撞 P246

方法sprite.groupcollide()将每颗子弹的rect同每个外星人的rect进行比较,并返回一个字典,其中包含发生了碰撞的子弹和外星人。在这个字典中,每个键都是一颗子弹,而相应的值都是被击中的外星人。

def check_bullet_alien_collisions(ai_settings, screen, ship, aliens, bullets):
    """Respond to bullet-alien collisions."""
    # 删除相应的子弹和外星人
    collisions = pygame.sprite.groupcollide(bullets, aliens, True, True)

两个True告诉pygame删除发生碰撞的子弹和外星人,要模拟能够穿行到屏幕顶端的高能子弹——消灭它击中的每个外星人,可将第一个布尔设为False,并让第二个布尔实参为True。

3.检测外星人与飞船碰撞 P250

if pygame.sprite.spritecollideany(ship, aliens):
	ship_hit(ai_settings, stats, screen, ship, aliens, bullets)

方法spritecollideany()接受两个实参:一个精灵(ship)和一个编组(aliens)。它检查编组是否有成员与精灵发生了碰撞,并在找到与精灵发生了碰撞的成员后就停止遍历编组,返回找到的第一个与飞船发生碰撞的外星人。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值