From d54adb91362437e1540a6674050d345236729649 Mon Sep 17 00:00:00 2001 From: lirunyi <54633216+LiRunyi2001@users.noreply.github.com> Date: Fri, 31 Jan 2020 20:52:21 +0800 Subject: [PATCH] Add files via upload --- alien.py | 23 +++++++++++++++++++++++ game_functions.py | 34 ++++++++++++++++++++++++++++++++++ settings.py | 18 ++++++++++++++++++ ship.py | 37 +++++++++++++++++++++++++++++++++++++ 4 files changed, 112 insertions(+) create mode 100644 alien.py create mode 100644 game_functions.py create mode 100644 settings.py create mode 100644 ship.py diff --git a/alien.py b/alien.py new file mode 100644 index 0000000..cec6c02 --- /dev/null +++ b/alien.py @@ -0,0 +1,23 @@ +import sys +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") + ship=Ship(ai_settings,screen) + + #开始游戏循环 + while True: + #监视键盘、鼠标事件 + gf.check_events(ship) + ship.update() + gf.update_screen(ai_settings,screen,ship) + + +run_game() diff --git a/game_functions.py b/game_functions.py new file mode 100644 index 0000000..43b9d9a --- /dev/null +++ b/game_functions.py @@ -0,0 +1,34 @@ +import sys +import pygame + +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 +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 + +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): + """update images,change into new screen""" + + screen.fill(ai_settings.bg_color) + ship.blitme() + + pygame.display.flip() \ No newline at end of file diff --git a/settings.py b/settings.py new file mode 100644 index 0000000..f0670f1 --- /dev/null +++ b/settings.py @@ -0,0 +1,18 @@ +class Settings(): + """store all the settings""" + + def __init__(self): + + #screen + self.screen_width=1200 + self.screen_height=800 + self.bg_color=(230,230,230) + + #set ship + self.ship_speed_factor=1.5 + + #bullet + self.bullet_speed_factor=1 + self.bullet_width=3 + self.bullet_height=15 + self.bullet_color=60,60,60 diff --git a/ship.py b/ship.py new file mode 100644 index 0000000..004eccb --- /dev/null +++ b/ship.py @@ -0,0 +1,37 @@ +import pygame +class Ship(): + def __init__(self,ai_settings,screen): + """initialize ship and position""" + self.screen=screen + self.ai_settings=ai_settings + + #load image and get 外接矩形 + self.image=pygame.image.load(r'E:/Game/images/ship.bmp') + self.rect=self.image.get_rect() + self.screen_rect=screen.get_rect() + + #put ship in the center + self.rect.centerx=self.screen_rect.centerx + self.rect.bottom=self.screen_rect.bottom + + #存储速度 + self.center=float(self.rect.centerx) + + #move sign + self.moving_right=False + self.moving_left = False + + def update(self): + """根据标志调整飞船位置""" + #更新center,而不是rect + if self.moving_right and self.rect.right0: + self.center -= self.ai_settings.ship_speed_factor + #更新rect对象 + self.rect.centerx=self.center + + + def blitme(self): + """draw ship""" + self.screen.blit(self.image,self.rect) \ No newline at end of file