предположим, у нас есть следующий объект в игре

Я хочу переместить этот объект влево-вправо, вверх и вниз, чтобы он не выходил за пределы сцены, соответствующий код находится здесь:
импортировать систему import pygame # содержит функции для создания игры из настроек импорта настроек с импорта корабля Корабль # из чужого импорта Alien класс AlienInvasion: """Общий класс по управлению игровыми ресурсами и поведением.""" защита __init__(сам): """Инициализируйте игру и создайте игровые ресурсы.""" pygame.init() # инициализируем настройки фона # который необходим игре для правильной работы self.settings = Настройки() self.screen = pygame.display.set_mode( (self.settings.screen_width, self.settings.screen_height)) # создает окно дисплея с этими размерами pygame.display.set_caption("Вторжение пришельцев") self.ship = Корабль(сам) # self.alien = Чужой(сам) защита run_game(сам): """Запуск основного цикла игры.""" пока правда: self.check_events() self.ship.update() self.update_screen() защита check_events (сам): # Следите за событиями клавиатуры и мыши. для события в pygame.event.get(): если event.type == pygame.QUIT: sys.exit() elif event.type == pygame.KEYDOWN: если event.key == pygame.K_RIGHT: # Переместите корабль 1 вправо. self.ship.moving_right = Истина elif event.key == pygame.K_LEFT: self.ship.moving_left = Истина elif event.key ==pygame.K_UP: self.ship.moving_up = Истина elif event.key ==pygame.K_DOWN: self.ship.moving_below =Истина elif event.type == pygame.KEYUP: если event.key == pygame.K_RIGHT: self.ship.moving_right = Ложь elif event.key == pygame.K_LEFT: self.ship.moving_left = Ложь elif event.key ==pygame.K_UP: self.ship.moving_up = Ложь elif event.key ==pygame.K_DOWN: self.ship.moving_below = Ложь защита update_screen (сам): """Обновите изображения на экране и переключитесь на новый экран.""" # перерисовываем экран во время каждого прохода цикла self.screen.fill(self.settings.bg_color) self.ship.blitme() # self.alien.blitme() # Сделайте видимым последний нарисованный экран. pygame.display.flip() если __name__ == "__main__": # создаем экземпляр игры и запускаем игру ай = Вторжение Чужих() ai.run_game() Параметры настройки таковы:
Настройки класса: """Класс для хранения всех настроек Alien Invasion""" защита __init__(сам): """Инициализируйте настройки игры.""" self.screen_width = 1000 self.screen_height = 600 self.bg_color = (230, 230, 230) # Настройки корабля self.ship_speed = 0,7 и соответствующий класс корабля здесь:
импортировать pygame из настроек импорта настроек # х = 1000 # у = 600 класс корабля: # глобальные x,y """Класс управления кораблем.""" 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("alliens_ship.jpg").convert_alpha() self.rect = self.image.get_rect() # Запускайте каждый новый корабль в центре нижней части экрана. self.rect.midtop = self.screen_rect.midtop # Сохраните десятичное значение горизонтального положения корабля. self.x = float(self.rect.x) # Флаг движения self.moving_right = Ложь self.moving_left = Ложь self.moving_below = Ложь self.moving_up = Ложь обновление защиты (сам): """Обновить положение кораблей на основе флагов движения.""" # Обновите значение x корабля, а не прямоугольник. если self.moving_right и self.rect.right < self.screen_rect.right: self.rect.x += self.settings.ship_speed если self.moving_left и self.rect.left >= 0: self.rect.x -= self.settings.ship_speed если self.moving_below и self.rect.y 0: self.rect.y -= self.settings.ship_speed если self.rect.y>=600: self.rect.y =600 # Обновляем объект rect из self.x # self.rect.x = self.x def blitme(собственный): """Нарисуйте корабль в его текущем местоположении.""" self.screen.blit(self.image, self.rect) для левой и правой стороны все работает нормально, вверху тоже все работает нормально, но ниже нет критериев остановки, я добавил следующую строку:
если self.moving_up и self.rect.y >0: self.rect.y -= self.settings.ship_speed если self.rect.y>=600: self.rect.y =600 но он продолжает движение, как мне его остановить? заранее спасибо