開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- Python 3.6 (プログラミング言語)
Python Crash Course (Eric Matthes (著)、No Starch Press)のPART 2(PROJECTS)、PROJECT 1(ALIEN INVASION)、Chapter 12.(A SHIP THAT FIRES BULLETS)のTRY IT YOURSELF 12-1.(Rocket)(No.6848)を取り組んでみる。
TRY IT YOURSELF 12-1.(Rocket)(No.6848)
コード(Emacs)
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import sys import pygame class Settings: def __init__(self): self.screen_width = 1200 self.screen_height = 800 self.bg_color = (230, 230, 230) self.ship_speed_factor = 10 class Ship: def __init__(self, ai_settings, screen): self.screen = screen self.ai_settings = ai_settings self.image = pygame.image.load('cat.bmp') self.rect = self.image.get_rect() self.screen_rect = screen.get_rect() self.rect.centerx = self.screen_rect.centerx self.rect.centery = self.screen_rect.centery self.centerx = float(self.rect.centerx) self.centery = float(self.rect.centery) self.moving_right = False self.moving_left = False self.moving_up = False self.moving_down = False def blitme(self): self.screen.blit(self.image, self.rect) def update(self): if self.moving_right and self.rect.right < self.screen_rect.right: self.centerx += self.ai_settings.ship_speed_factor elif self.moving_left and self.rect.left > 0: self.centerx -= self.ai_settings.ship_speed_factor if self.moving_up and self.rect.top > 0: self.centery -= self.ai_settings.ship_speed_factor elif (self.moving_down and self.rect.bottom < self.screen_rect.bottom): self.centery += self.ai_settings.ship_speed_factor self.rect.centerx = self.centerx self.rect.centery = self.centery def check_keydown_events(event, ship): if event.key == pygame.K_RIGHT: ship.moving_right = True elif event.key == pygame.K_LEFT: ship.moving_left = True elif event.key == pygame.K_UP: ship.moving_up = True elif event.key == pygame.K_DOWN: ship.moving_down = True def check_keyup_events(event, ship): if event.key == pygame.K_RIGHT: ship.moving_right = False elif event.key == pygame.K_LEFT: ship.moving_left = False elif event.key == pygame.K_UP: ship.moving_up = False elif event.key == pygame.K_DOWN: ship.moving_down = False def check_events(ship): for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() elif event.type == pygame.KEYDOWN: check_keydown_events(event, ship) elif event.type == pygame.KEYUP: check_keyup_events(event, ship) def update_screen(ai_settings, screen, ship): screen.fill(ai_settings.bg_color) ship.blitme() pygame.display.flip() def run_game(): pygame.init() ai_settings = Settings() screen = pygame.display.set_mode( (ai_settings.screen_width, ai_settings.screen_height)) ship = Ship(ai_settings, screen) while True: check_events(ship) ship.update() update_screen(ai_settings, screen, ship) if __name__ == '__main__': run_game()
入出力結果(Terminal, IPython)
$ ./sample2.py $
0 コメント:
コメントを投稿