diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..dcb1530 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "python.analysis.typeCheckingMode": "basic", + "python.analysis.autoImportCompletions": true +} \ No newline at end of file diff --git a/__pycache__/alien.cpython-311.pyc b/__pycache__/alien.cpython-311.pyc new file mode 100644 index 0000000..9df186e Binary files /dev/null and b/__pycache__/alien.cpython-311.pyc differ diff --git a/__pycache__/settings.cpython-311.pyc b/__pycache__/settings.cpython-311.pyc index eaafae1..b271ee7 100644 Binary files a/__pycache__/settings.cpython-311.pyc and b/__pycache__/settings.cpython-311.pyc differ diff --git a/__pycache__/ship.cpython-311.pyc b/__pycache__/ship.cpython-311.pyc new file mode 100644 index 0000000..ac9e8c6 Binary files /dev/null and b/__pycache__/ship.cpython-311.pyc differ diff --git a/alien.py b/alien.py new file mode 100644 index 0000000..a145b19 --- /dev/null +++ b/alien.py @@ -0,0 +1,18 @@ +import pygame + +class AlienShip(): + '''Модель и взаимодействие НЛО''' + + def __init__(self, ai_game): + """Инициализирует НЛО и задает его начальную позицию.""" + self.screen = ai_game.screen + self.screen_rect = ai_game.screen.get_rect() + # Загружает изображение корабля и получает прямоугольник. + self.image = pygame.image.load('image/alien.bmp') + self.rect = self.image.get_rect() + # Каждый новый корабль появляется у нижнего края экрана. + self.rect.center = self.screen_rect.center + + def blitme(self): + """Рисует корабль в текущей позиции.""" + self.screen.blit(self.image, self.rect) \ No newline at end of file diff --git a/image/alien.bmp b/image/alien.bmp new file mode 100644 index 0000000..a87189a Binary files /dev/null and b/image/alien.bmp differ diff --git a/image/ship.bmp b/image/ship.bmp new file mode 100644 index 0000000..c06eea5 Binary files /dev/null and b/image/ship.bmp differ diff --git a/main.py b/main.py index d755fd3..b2befcb 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,8 @@ import sys import pygame from settings import Settings +from ship import Ship +# from alien import AlienShip class AlienInvasion(): '''Класс всей игры''' @@ -8,19 +10,47 @@ class AlienInvasion(): def __init__(self): pygame.init() self.settings = Settings() - # Поменять разрешение self.screen = pygame.display.set_mode((self.settings.screen_weight, self.settings.screen_height)) pygame.display.set_caption("Alien Invasion") + self.ship = Ship(self) + # self.alien = AlienShip(self) def run_game(self): '''Запуск игры''' while(1): - for event in pygame.event.get(): + 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() - pygame.display.flip() + else: + self._check_movement(event) + + def _check_movement(self, event): + # Перемещение корабля + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_RIGHT: + self.ship.moving_right = True + elif event.key == pygame.K_LEFT: + self.ship.moving_left = True + elif event.type == pygame.KEYUP: + if event.key == pygame.K_RIGHT: + self.ship.moving_right = False + elif event.key == pygame.K_LEFT: + self.ship.moving_left = False + + def _update_screen(self): # Установить цвет фона из настроек self.screen.fill(self.settings.bg_color) + # Обновить положение корабля + self.ship.blitme() + # self.alien.blitme() + + + pygame.display.flip() if __name__ == '__main__': AlInv = AlienInvasion() diff --git a/settings.py b/settings.py index f6ceaba..1030c6c 100644 --- a/settings.py +++ b/settings.py @@ -3,4 +3,4 @@ class Settings(): def __init__(self): self.screen_weight = 1200 self.screen_height = 800 - self.bg_color = (230, 230, 230) \ No newline at end of file + self.bg_color = (220, 220, 220) # RGB \ No newline at end of file diff --git a/ship.py b/ship.py new file mode 100644 index 0000000..cb82a17 --- /dev/null +++ b/ship.py @@ -0,0 +1,27 @@ +import pygame + +class Ship(): + '''Класс для управления кораблем.''' + + def __init__(self, ai_game): + """Инициализирует корабль и задает его начальную позицию.""" + self.screen = ai_game.screen + self.screen_rect = ai_game.screen.get_rect() + # Загружает изображение корабля и получает прямоугольник. + self.image = pygame.image.load('image/ship.bmp') + self.rect = self.image.get_rect() + # Каждый новый корабль появляется у нижнего края экрана. + self.rect.midbottom = self.screen_rect.midbottom + self.moving_right = False + self.moving_left = False + + def update(self): + '''Обновление позиции корабля игрока''' + while self.moving_right: + self.rect.x += 1 + while self.moving_left: + self.rect.x -= 1 + + def blitme(self): + """Рисует корабль в текущей позиции.""" + self.screen.blit(self.image, self.rect) \ No newline at end of file