При запуске игры корабль не центрируется с левого бока, вместо этого он создается в левом углу. Как это решить?

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.image = pygame.transform.scale(self.image, (80, 80))
    self.image = pygame.transform.rotate(self.image, angle=-90)
    self.rect = self.image.get_rect()

    # Каждый новый корабль появляется у нижнего края экрана.
    self.rect.midleft = self.screen_rect.midleft
    #self.rect.midbottom = self.screen_rect.midbottom
    # Сохранение вещественной координаты центра корабля.
    #self.x = float(self.rect.x)
    self.y = float(self.rect.y)

    # Флаг перемещения
    self.moving_right = False
    self.moving_left = False
    self.moving_up = False
    self.moving_down = False

    # Получить значение космического корабля, перемещенного вниз
    self.screen_rect.top = self.rect.top

def update(self):
    """Обновляет позицию корабля с учетом флага."""
     #Обновляется атрибут x, не rect.
    #if self.moving_right and self.rect.right < self.screen_rect.right:
    #    self.x += self.settings.ship_speed
    #if self.moving_left and self.rect.left > 0:
    #    self.x -= self.settings.ship_speed
    if self.moving_down and self.rect.bottom > self.screen_rect.bottom:
        self.y += self.settings.ship_speed
    if self.moving_up and self.rect.top > 0:
        self.y -= self.settings.ship_speed
    if self.moving_down and self.rect.midleft > self.screen_rect.midleft:
        self.y += self.settings.ship_speed
    if self.moving_down and self.rect.midleft < self.screen_rect.midleft:
        self.y += self.settings.ship_speed

    # Обновление атрибута rect на основании self.x.
    #self.rect.x = self.x
    self.rect.y = self.y

def blitme(self):
    """Рисует корабль в текущей позиции."""
    self.screen.blit(self.image, self.rect)

def center_ship(self):
    """Размещает корабль в центре нижней стороны."""
    self.rect.midleft = self.screen_rect.midleft
    #self.x = float(self.rect.x)
    self.y = float(self.rect.y)

Ответы (0 шт):