python《外星人入侵》AttributeError: 'Settings' object has no attribute 'get_rect'

问题相关代码,请勿粘贴截图
#ship.py
import pygame
from pygame.sprite import  Sprite
class Ship(Sprite):

    def __init__(self, ai_settings, screen):
        """初始化飞船并设置其初始位置"""
        super(Ship,self).__init__()
        self.screen = screen
        self.ai_settings = ai_settings

        # 加载飞船图像并获取其外接矩形
        self.image = pygame.image.load('alien1.gif')
        self.rect = self.image.get_rect()
        self.screen_rect = screen.get_rect()

        # 将每艘新飞船放在屏幕底部中央
        self.rect.centerx = self.screen_rect.centerx
        self.rect.bottom = self.screen_rect.bottom

        # 在飞船的属性center中储存小数值
        self.center = float(self.rect.centerx)

        # 移动标志
        self.moving_right = False
        self.moving_left = False

    def update(self):
        """根据移动标志调整飞船"""
        # 更新飞船的center值,而非rect
        if self.moving_right and self.rect.right < self.screen_rect.right:
            self.center += self.ai_settings.ship_speed_factor
        if self.moving_left and self.rect.left >0 :
            self.center -= self.ai_settings.ship_speed_factor

        #根据self.center更新rect对象
        self.rect.centerx = self.center



    def blitme(self):
        """在指定位置绘制飞船"""
        self.screen.blit(self.image,self.rect)

    def center_ship(self):
        """让飞船在屏幕居中"""
        self.center = self.screen_rect.centerx
#settings.py

class Settings():
    """储存《外星人入侵》的所有设置类"""

    def __init__(self):
        """初始化游戏的设置"""
        # 屏幕设置
        self.screen_width = 1200
        self.screen_height = 800
        self.bg_color = (230, 230, 230)


        # 子弹设置
        self.bullet_speed_factor = 3
        self.bullet_width = 3
        self.bullet_height = 15
        self.bullet_color = 60,60,60
        self.bullets_allowed = 3

        # 外星人设置
        self.alien_speed_factor = 1
        self.fleet_drop_speed = 10
        # fleet_direction为1表示向右移,为-1表示向左移
        self.fleet_direction = 1

        # 飞船设置
        self.ship_speed_factor = 1.5
        self.ship_limit = 3

        # 以什么样的速度加快游戏节奏
        self.speedup_scale = 1.1
        # 外星人点数的提高速度
        self.score_scale = 1.5

        self.initialize_dynamic_settings()

    def initialize_dynamic_settings(self):
        """初始化随游戏进行而变化的设置"""
        self.ship_speed_factor = 1.5
        self.bullet_speed_factor = 3
        self.alien_speed_factor = 1

        # fleet_direction 为1表示为右;为-1表示向左
        self.fleet_direction = 1

        # 记分
        self.alien_points = 50

    def increase_speed(self):
        """提高速度设置"""
        self.ship_speed_factor *= self.speedup_scale
        self.bullet_speed_factor *= self.speedup_scale
        self.alien_speed_factor *= self.speedup_scale

        self.alien_points = int(self.alien_points * self.score_scale)

运行结果及报错内容
Traceback (most recent call last):
  File "/Users/shihongguang/PycharmProjects/pythonProject/alien_invasion.py", line 48, in <module>
    run_game()
  File "/Users/shihongguang/PycharmProjects/pythonProject/alien_invasion.py", line 24, in run_game
    ship = Ship(screen,ai_settings)
  File "/Users/shihongguang/PycharmProjects/pythonProject/ship.py", line 14, in __init__
    self.screen_rect = screen.get_rect()
AttributeError: 'Settings' object has no attribute 'get_rect'

我的解答思路和尝试过的方法

重新检查了“settings”板块和“ship”板块,之前运行没有出现问题,最近通过更改一些bug,突然发现运行不通.

我想要达到的结果

需要你把完整的代码发一下,不然不知道错在哪里

第九行,赋予screen大概应该是 self.screen = ai_game.screen
目前我刚解决的类似问题也是这个,已经解决