python - pygame 中的属性错误“AttributeError: 'Star' object has no attribute 'add_internal”
问题描述
class StarsGame:
def __init__(self):
pygame.init()
self.settings = Settings()
self.screen = pygame.display.set_mode((self.settings.screen_width, self.settings.screen_height))
self.stars = pygame.sprite.Group()
def run_game(self):
while True:
self._create_fleet()
self._update_screen()
self._check_events()
def _check_events(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
def _create_fleet(self):
star = Star(self)
self.stars.add(star)
def _update_screen(self):
self.screen.fill(self.settings.bg_color)
self.stars.draw(self.screen)
pgame.display.flip()
if __name__ == '__main__':
sg = StarsGame()
sg.run_game()
class Star:
def __init__(self, sg_game):
super().__init__()
self.screen = sg_game.screen
self.image = pygame.image.load('images/star.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)
self.y = float(self.rect.y)
添加星号时发现错误self.stars
:
AttributeError: 'Star' object has no attribute 'add_internal'
解决方案
To add a star
to a pygame.sprite.Group
, Star
must be derived from pygame.sprite.Sprite
(see Inheritance):
class Star(pygame.sprite.Sprite):
def __init__(self, sg_game):
super().__init__()
# [...]
推荐阅读
- nginx - 在 Docker 中使用 Nginx 反向代理的 PWA (Angular)
- c++ - 当前的标准草案似乎无法解释为什么两个结构化绑定声明相互冲突
- javascript - 从二维数组创建树并更新 Google Sheet
- c# - 无法在 DataGridView 中编辑单元格
- javascript - 如何使用 javascript 创建和框架实体动画
- reactjs - 在反应js中将数组值显示到选择选项标签中
- python - 如何利用 numba 在 Python 中有效地解包 Monte Carlo 模拟?解决了
- node.js - “UnhandledPromiseRejectionWarning:错误:非法参数:未定义,字符串”
- python - 通过 selenium 和 request 获取下一页数据
- r - 如何在 R 控制台中访问所有激活的 tk 窗口 ID(路径名)?