《Python从入门到实践》外星人入侵项目,击中后外星飞船无法停止掉落

更新:
又测了一下,只有在一次碰撞双数飞船的时候才正常,这……


之前没有学过编程语言,在pygame官方文档里也没有找到思路,求问大家
正常逻辑应该是:判断触碰边缘>>下落一段距离改变横向移动方向
目前是子弹和飞船碰撞删除之后:一直在下落没有改变方向
奇怪的是下落和改变方向是写在一个循环里的,却只有下落在一直循环

游戏类方法

#子弹
 def _update_bullet(self):
        '''子弹移动'''
        self.bullets.update()
        for b in self.bullets.copy():
            if b.rect.bottom <= 0:
                self.bullets.remove(b)
        '''碰撞删除'''
        col = pygame.sprite.groupcollide(self.bullets, self.aliens, True, True)

#飞船
def _move_aliens(self):
        '''左右移动 + 触碰边缘下落转向'''
        self._check_aliens_edge()
        self.aliens.update()

def _check_aliens_edge(self):
        '''触碰边缘下落转向'''
        for alien in self.aliens.sprites():
            if alien.check_edge():
                self._drop_turn()
                break

def _drop_turn(self):
        '''下落转向'''
        for alien in self.aliens.sprites():
            self.set.alien_x_direction *= -1
            alien.rect.y += self.set.alien_drop_speed

Alien类方法

    def check_edge(self):
        '''碰撞边缘判断'''
        screen_rect = self.screen.get_rect()
        if self.rect.right >= screen_rect.right or self.rect.left <= 0:
            return True

    def update(self):
        '''左右移动'''
        self.x += (self.set.alien_speed * self.set.alien_x_direction)
        self.rect.x = self.x

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。