用pygame 为什么总是返回AttributeError

img

img

img

img


为什么用AlienInvasion创建的实例没有screen的属性呢

在 AlienInvasion 的构造函数中,把 self.screen 的定义放在 self.ship 之前

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 给你找了一篇非常好的博客,你可以看看是否有帮助,链接:【Python案例】基于Pygame黑白棋游戏(附源码)
  • 除此之外, 这篇博客: pygame外星人入侵中的 alien.py 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    管理外星人类

    import pygame
    from pygame.sprite import Sprite
    
    
    class Alien(Sprite):
        """表示单个外星人的类"""
    
        def __init__(self, ai_settings, screen):
            """初始化外星人并设置其初始位置"""
            super().__init__()
            self.screen = screen
            self.ai_settings = ai_settings
    
            # 加载外星人图像,并设置其rect属性
            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 blitme(self):
            """在指定位置绘制外星人"""
            self.screen.blit(self.image, self.rect)
    
        def cheak_edgs(self):
            """如果外星人位于屏幕边缘,就返回True"""
            screen_rect = self.screen.get_rect()
            if self.rect.right >= screen_rect.right:
                return True
            elif self.rect.left <= 0:
                return True
    
        def update(self):
            """向左或向右移动外星人人"""
            self.x += (self.ai_settings.alien_speed_factor * self.ai_settings.fleet_direction)
            self.rect.x = self.x
    
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^