Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2022, 19:47   #1
Тимур1991
Новичок
Джуниор
 
Регистрация: 02.12.2022
Сообщений: 3
По умолчанию доработать программу

Нужно создать корабль, который может двигаться вправо и влево, вверх и вниз.

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_height))
        pygame.display.set_caption("Alien Invasion")
        self.ship = Ship(self)
        self.bg_color = (0, 0, 255)
 
    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.settings.bg_color)
                self.ship.blitme()  
                pygame.display.flip()
 
if __name__ == '__main__':
    ai = AlienInvasion()
    ai.run_game()



Settings.py

Код:
class Settings():
    def __init__(self):
        self.screen_width = 1200
        self.screen_height = 800
        self.bg_color = (0, 0, 255)
        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.midbottom = self.screen_rect.midbottom
        self.x = float(self.rect.x)
        self.moving_right = False
        self.moving_left = False
        self.moving_up = False
        self.moving_down = False
        
        
    def update(self):
        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
        
            self.rect.x = self.x 
    def blitme(self):
        self.screen.blit(self.image, self.rect)
      
Изображения
Тип файла: bmp ship.bmp (50.8 Кб, 3 просмотров)

Последний раз редактировалось Тимур1991; 05.12.2022 в 19:55.
Тимур1991 вне форума Ответить с цитированием
Старый 18.12.2022, 20:30   #2
Дмитрий Филюшкин
Новичок
Джуниор
 
Регистрация: 13.12.2022
Сообщений: 2
По умолчанию

Здравствуйте, Тимур.
Вот доделал программу по Вашему заданию:

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_height))
        pygame.display.set_caption("Alien Invasion")
        self.ship = Ship(self)
        self.bg_color = (0, 0, 255)
 
    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.settings.bg_color)
                self.ship.blitme()  
                pygame.display.flip()
 
if __name__ == '__main__':
    ai = AlienInvasion()
    ai.run_game()
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.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
        
        
    def update(self):
        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_up and self.rect.top > 0:
            self.y -= self.settings.ship_speed
        if self.moving_down and self.rect.bottom < self.screen_rect.bottom:
            self.y += self.settings.ship_speed
        
        self.rect.x = self.x
        self.rect.y = self.y
    def blitme(self):
        self.screen.blit(self.image, self.rect)
Дмитрий Филюшкин вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доработать программу brownb Фриланс 15 13.04.2022 16:24
Доработать программу ozziedejavu Помощь студентам 1 15.12.2017 15:29
Доработать программу. VS С++ N-site Фриланс 0 05.06.2013 20:24
Доработать программу за $ lutdan Фриланс 3 09.05.2011 17:32