hzyeeeeee 2024-03-09 22:41 采纳率: 57.9%
浏览 20
已结题

pygame的外星人入侵中shooting bullet的add(new_bullet)加入遍组报错

报错内容如上

img


报错:应为类型 '_SpriteSupportsGroup | AbstractGroup[_SpriteSupportsGroup | Any] | Iterable[_SpriteSupportsGroup | Any] | Any' (匹配的泛型类型 '_TSprite | AbstractGroup[_TSprite] | Iterable[_TSprite]'),但实际为 'Bullet'
官网原代码

img

已对照过代码内容一致无误,但仍然报错,求解答。

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-03-09 22:42
    关注

    引自免费微信小程序:皆我百晓生

    在Pygame的"外星人入侵"项目中,根据您提供的代码片段和错误信息,问题在于Bullet类没有正确地继承自pygame.sprite.Sprite类。当尝试将新创建的子弹对象new_bullet添加到编组self.bullets时,编组期望接收的是一个符合_SpriteSupportsGroup接口的对象(即继承自pygame.sprite.Sprite的对象),但在这里实际上传入了一个Bullet实例。

    为了修复这个问题,请确保Bullet类正确实现了继承:

    import pygame.sprite
    
    class Bullet(pygame.sprite.Sprite):
        def __init__(self, ai_game):
            super().__init__()  # 这一行实现对pygame.sprite.Sprite类的初始化
            # ... 其他子弹类的相关属性和方法定义 ...
    

    如果Bullet类已经正确继承了pygame.sprite.Sprite,请检查是否由于其他原因导致类型不匹配,例如导入了同名的其他模块或者类重定义等。确认无误后,上述代码段中的 _fire_bullet 方法应该能正常工作,不会在调用 self.bullets.add(new_bullet) 时抛出类型错误。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月21日
  • 已采纳回答 3月13日
  • 修改了问题 3月9日
  • 创建了问题 3月9日