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) def run_game(self): #开始游戏的主循环 while True: self._check_events() self._check_update_screen() self.ship.update() def _check_events(self): for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() elif event.type == pygame.KEYDOWN: if event.key == pygame.K_RIGHT: self.ship.moving_right = True elif event.type == 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 _check_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.screen_rect = ai_game.screen.get_rect() self.settings = ai_game.settings self.image = pygame.image.load('ship1.png') 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 def blitme(self): self.screen.blit(self.image,self.rect) def update(self): if self.moving_right: self.rect.x += 1 if self.moving_left: self.rect.x -= 1