From c42975c6238f38a284f361c7f1a858c132cf78d4 Mon Sep 17 00:00:00 2001 From: 206530225 <1225859578@qq.com> Date: Wed, 23 Jun 2021 14:36:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20'Alien=5FInvasion.py'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Alien_Invasion.py | 62 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/Alien_Invasion.py b/Alien_Invasion.py index a92dd84..0d9d034 100644 --- a/Alien_Invasion.py +++ b/Alien_Invasion.py @@ -137,9 +137,71 @@ class AlienInvasion: self.sb.prep_level() 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) + elif event.type == pygame.MOUSEBUTTONDOWN: + mouse_pos = pygame.mouse.get_pos() + self._check_play_button(mouse_pos) + + def _check_play_button(self,mouse_pos): + """在玩家单机Play按钮时开始新游戏""" + button_clicked = self.play_button.rect.collidepoint(mouse_pos) + if button_clicked and not self.stats.game_active: + # 重置游戏设置 + self.settings.initialize_dynamic_settings() + + # 重置游戏统计信息 + self.stats.reset_stats() + self.stats.game_active = True + self.sb.prep_score() + self.sb.prep_level() + self.sb.prep_ships() + + # 清空余下的外星人和子弹 + self.aliens.empty() + self.bullets.empty() + + elif event.type == pygame.KEYDOWN: + # 创建一群新的外星人并让飞船居中 + self._create_fleet() + self.ship.center_ship() + + # 隐藏鼠标光标 + pygame.mouse.set_visible(False) + + def _check_keydown_events(self, event): + """响应按键""" + if event.key == pygame.K_RIGHT: + self.ship.moving_right = True + elif event.key == pygame.K_LEFT: + elif event.key == pygame.K_LEFT: + self.ship.moving_left = True + elif event.key == pygame.K_q: + sys.exit() + elif event.key == pygame.K_SPACE: + self._fire_bullet() + + elif event.type == pygame.KEYUP: + def _check_keyup_events(self,event): + """响应松开""" + if event.key == pygame.K_RIGHT: + self.ship.moving_right = False + self.ship.moving_right = False + elif event.key == pygame.K_LEFT: + self.ship.moving_left = False + self.ship.moving_left = False + + def _fire_bullet(self): + """创建一颗子弹,并将其加入编组bullets中""" + if len(self.bullets) < self.settings.bullets_allowed: + new_bullet = Bullet(self) + self.bullets.add(new_bullet) elif event.type == pygame.KEYDOWN: if event.key == pygame.K_RIGHT: