|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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 # 竖直移动速度
当我未加入射击碰撞检测运行没有问题,加入后,只要有一个子弹击中外星人,整群外星人就会乱飞出屏幕 |
|