马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
from pygame.sprite import Sprite
class Alien(Sprite):
def __init__(self,ai_game):
super().__init__()
self.screen = ai_game.screen
self.settings = ai_game.settings
self.image = pygame.image.load('images/alien.bmp')
self.rect = self.image.get_rect()
self.rect.x = self.rect.width
self.rect.y = self.rect.height
self.x = float(self.rect.x)
def check_edges(self):
# 判断外星人是否触碰边界
self.screen_rect = self.screen.get_rect()
if self.rect.right >= self.screen_rect.right or self.rect.left <= 0:
return True
def update(self):
# 更新外星人位置
self.x += self.settings.alien_speed*self.settings.alien_direction
self.rect.x = self.x[/code][/code]
上面是外星人类,下面是主程序关于外星人移动的 def _update_aliens(self):
self.check_alien_edges()
self.aliens.update()
#print(self.settings.alien_direction)
def check_alien_edges(self):
for alien in self.aliens.sprites():
if alien.check_edges():
self._change_aliens_direction()
break
def _change_aliens_direction(self):
for alien in self.aliens.sprites():
# alien.rect.y += self.settings.alien_drop_speed
self.settings.alien_direction *= -1
# 外星人的设置参数
self.alien_speed = 0.8 # 水平移动速度
self.alien_direction = 1 # 移动方向
self.alien_drop_speed = 10 # 竖直移动速度
当我未加入射击碰撞检测运行没有问题,加入后,只要有一个子弹击中外星人,整群外星人就会乱飞出屏幕 |