更新 'Alien_Invasion.py'
This commit is contained in:
parent
f59929ef91
commit
c42975c623
|
@ -137,9 +137,71 @@ class AlienInvasion:
|
||||||
self.sb.prep_level()
|
self.sb.prep_level()
|
||||||
|
|
||||||
def _check_events(self):
|
def _check_events(self):
|
||||||
|
"""响应按键和鼠标事件"""
|
||||||
for event in pygame.event.get():
|
for event in pygame.event.get():
|
||||||
if event.type == pygame.QUIT:
|
if event.type == pygame.QUIT:
|
||||||
sys.exit()
|
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:
|
elif event.type == pygame.KEYDOWN:
|
||||||
if event.key == pygame.K_RIGHT:
|
if event.key == pygame.K_RIGHT:
|
||||||
|
|
Loading…
Reference in New Issue