更新:
又测了一下,只有在一次碰撞双数飞船的时候才正常,这……
之前没有学过编程语言,在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天,您在需要使用的时候【私信】联系我,我会为您补发。