更新 'alien_invasion.py'

This commit is contained in:
206530228 2021-06-20 20:11:16 +08:00
parent 2298e602c5
commit 5c8330d0a1
1 changed files with 23 additions and 0 deletions

View File

@ -4,6 +4,7 @@ import pygame
from settings import Settings
from ship import Ship
from bullet import Bullet
class AlienInvasion:
"""管理游戏资源和行为的类"""
@ -19,6 +20,7 @@ class AlienInvasion:
pygame.display.set_caption("Alien Invasion")
self.ship = Ship(self)
self.bullets = pygame.sprite.Group()
# 设置背景色
self.bg_color = (230, 230, 230)
@ -28,8 +30,19 @@ class AlienInvasion:
while True:
self._check_events()
self.ship.update()
self._update_bullets()
self._update_screen()
def _update_bullets(self):
"""更新子弹的位置并删除消失的子弹"""
#更新子弹的位置
self.bullets.update()
# 删除消失的子弹
for bullet in self.bullets.copy():
if bullet.rect.bottom <= 0:
self.bullets.remove(bullet)
def _check_events(self):
"""响应按键和鼠标事件"""
for event in pygame.event.get():
@ -48,6 +61,8 @@ class AlienInvasion:
self.ship.moving_left = True
elif event.key == pygame.K_q:
sys.exit()
elif event.key == pygame.K_SPACE:
self._fire_bullet()
def _check_keyup_events(self,event):
"""响应松开"""
@ -56,10 +71,18 @@ class AlienInvasion:
elif event.key == pygame.K_LEFT:
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)
def _update_screen(self):
"""更新屏幕上的图像,并切换到新屏幕"""
self.screen.fill(self.settings.bg_color)
self.ship.blitme()
for bullet in self.bullets.sprites():
bullet.draw_bullet()
pygame.display.flip()