请问python从入门到实践飞船游戏中怎么使飞船上下移动?运行时可以左右移动就是不能上下移动

settings.py

class Settings:
    """存储游戏《外星人入侵》中所有设置的类"""

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

ship.py

import pygame

class Ship:
    """管理飞船的类"""

    def __init__(self,ai_game):
        """初始化飞船并设置其初始位置。"""
        self.screen = ai_game.screen
        self.settings = ai_game.settings
        self.screen_rect = ai_game.screen.get_rect()

        #加载飞船图像并获取其外接矩形。
        self.image = pygame.image.load('images/ship.bmp')
        self.rect = self.image.get_rect()

        #对于每艘新飞船,都将其放在屏幕底部的中央。
        self.rect.centerx = self.screen_rect.centerx
        self.rect.centery = self.screen_rect.centery

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

        #左右移动标志
        self.moving_right = False
        self.moving_left = False
        self.moving_up = False
        self.moving_down = False

    def update(self):
        """根据移动标志调整飞船的位置。"""
        #更新飞船而不是rect对象的x值
        if self.moving_right and self.rect.centerx < self.settings.screen_width:
            #向右移动飞船
            self.centerx += self.settings.ship_speed
        if self.moving_left and self.rect.centerx > 0:
            #向左移动飞船
            self.centerx -= self.settings.ship_speed
        if self.moving_up and self.rect.centery > 0:
            #向上移动飞船
            self.centery -= self.settings.ship_speed
        if self.moving_down and self.rect.centery < self.settings.screen_heigh:
            #向下移动飞船
            self.centery += self.settings.ship_speed

        #根据centers的值更新rect对象。
        self.rect.centerx = self.centerx
        self.rect.centery = self.centery

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

alien_invasion.py

import sys

import pygame
from settings import Settings
from ship import Ship


class AlienInvasion:
    """管理游戏资源和行为的类。"""

    def __init__(self):
        """初始化游戏并创建游戏资源。"""
        pygame.init()
        self.settings = Settings()
        
        self.screen = pygame.display.set_mode((self.settings.screen_width,self.settings.screen_heigh))
        """全屏模式
        self.screen = pygame.display.set_mode((0,0),pygame.FULLSCREEN)
        self.settings.screen_width = self.screen.get_rect().width
        self.settings.screen_heigh = self.screen.get_rect().height
        """
        pygame.display.set_caption("Alien Invasion")

        self.ship = Ship(self)

        self.bg_color = (self.settings.bg_color)

    def run_game(self):
        """开始游戏的主循环。"""
        while True:
            self._check_events()
            self.ship.update()
            self._update_screen()
            

    def _check_events(self):
            #监视键盘和鼠标事件。
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit()
                elif event.type == pygame.KEYDOWN:
                    self._check_keydown_events(event)
                            
                elif event.type == pygame.KEYUP:
                    self._check_keyup_events(event)

    def _check_keydown_events(self,event):
        """响应按键。"""
        if event.key == pygame.K_RIGHT:
            self.ship.moving_right = True
        elif event.key == pygame.K_LEFT:
            self.ship.moving_left = True
        elif event.key == pygame.K_UP:
            self.ship.moving_up == True
        elif event.key == pygame.K_DOWN:
            self.ship.moving_down == True
        elif event.key == pygame.K_q:
            sys.exit()
        

    def _check_keyup_events(self,event):
        """响应松开。"""
        if event.key == pygame.K_RIGHT:
            self.ship.moving_right = False
        elif event.key == pygame.K_LEFT:
            self.ship.moving_left = False        
        elif event.key == pygame.K_UP:
            self.ship.moving_up == False
        elif event.key == pygame.K_DOWN:
            self.ship.moving_down == False    

    def _update_screen(self):
        #每次循环时都重绘屏幕。
        self.screen.fill(self.bg_color)
        self.ship.blitme()

        #让最近绘制的屏幕可见。
        pygame.display.flip()



if __name__ == '__main__':
    #创建游戏实例并运行游戏。
    ai = AlienInvasion()
    ai.run_game()