鱼C论坛

 找回密码
 立即注册
查看: 2170|回复: 0

pygame 外星人入侵中的bug

[复制链接]
发表于 2023-3-12 18:12:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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 # 竖直移动速度

当我未加入射击碰撞检测运行没有问题,加入后,只要有一个子弹击中外星人,整群外星人就会乱飞出屏幕
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-24 07:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表