0
0 комментариев

[apcode language=»python»]

import pygame
from settings import Settings
from ship import Ship
import game_functions as gf
 def run_game():
 # Инициализирует игру и создает объект экрана.
 pygame.init()
 ai_settings = Settings()
 screen = pygame.display.set_mode(
  (ai_settings.screen_width, ai_settings.screen_height))
 pygame.display.set_caption("Alien Invasion")
  # Создание корабля.
 ship = Ship(ai_settings, screen)
  # Запуск основного цикла игры.
 while True:
  gf.check_events(ship)
  gf.update_screen(ai_settings, screen, ship)
  ship.update()
 run_game()

[/apcode]

[apcode language=»python»]

import pygame
 class Ship():
 """"""
  def __init__(self, ai_settings, screen):
  """Инициализирует корабль и задает его начальную позицию."""
  self.screen = screen
  self.ai_settings = ai_settings
   # Загрузка изображения корабля и получение прямоугольника.
  self.image = pygame.image.load('images/ship.bmp')
  self.rect = self.image.get_rect()
  self.screen_rect = screen.get_rect()
   # Каждый новый корабль появляется у нижнего края экрана.
  self.rect.centerx = self.screen_rect.centerx
  self.rect.bottom = self.screen_rect.bottom
   # Сохранение вещественной координаты центра корабля.
  self.center = float(self.rect.centerx)
   # Флаг перемещения 
  self.moving_right = False
  self.moving_left = False
  def update(self):
  """Обновляется атрибут center, не rect"""
  if self.moving_right:
   self.center += self.ai_settings.ship_speed_factor
  if self.moving_left:
   self.center -= self.ai_settings.ship_speed_factor
   # Обновление атрибута rect на основании self.center
   self.rect.centerx = self.center
     def blitme(self):
  """Рисует корабль в текущей позиции."""
  self.screen.blit(self.image, self.rect)

[/apcode]

[apcode language=»python»]

import sys
 import pygame
 def check_events(ship):
 """Обрабатывает нажатия клавишь и события мыши."""
 for event in pygame.event.get():
  if event.type == pygame.QUIT:
   sys.exit()
  elif event.type == pygame.KEYDOWN:
   if event.key == pygame.K_RIGHT:
    ship.moving_right = True
   elif event.key == pygame.K_LEFT:
    ship.moving_left = True
     elif event.type == pygame.KEYUP:
   if event.key == pygame.K_RIGHT:
    ship.moving_right = False
   elif event.key == pygame.K_LEFT:
    ship.moving_left = False
 def update_screen(ai_settings, screen, ship):
 """Обновляет изображения на экране и отображает новый экран."""
 screen.fill(ai_settings.bg_color)
 ship.blitme()
  # Отображение последнего прорисованного экрана
 pygame.display.flip()

[/apcode]

[apcode language=»python»]

class Settings():
 """Класс для хранения всех настроек игры Alien Invasion"""
  def __init__(self):
  """Инициализирует настройки игры."""
  # Параметры экрана
  self.screen_width = 1200
  self.screen_height = 800
  self.bg_color = (230, 230, 230)
  self.ship_speed_factor = 1

[/apcode]

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


Добавить комментарий