更新 'Alien_Invasion.py'

This commit is contained in:
206530225 2021-06-23 14:36:42 +08:00
parent f59929ef91
commit c42975c623
1 changed files with 62 additions and 0 deletions

View File

@ -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: