alien-invasion.py
import pygame
from pygame.sprite import Group
from pygame.locals import *
from settings import Settings
from ship import Ship
from game_stats import Gamestats
from button import Button
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 Invasion")
#创建一个用于游戏统计信息的实例
stats = Gamestats(ai_settings)
#创建一艘飞船、一个用于存储子弹的编组、一个用于存储外星人的编组
ship = Ship(screen, ai_settings)
bullets = Group()
aliens = Group()
#创建一个外星人群
gf.create_fleet(ai_settings, screen, ship, aliens)
#创建Play按钮
play_button = Button(ai_settings, screen, "Play")
#开始游戏的主循环
while True:
gf.check_events(ai_settings, screen, ship, bullets, stats, play_button, aliens)
if stats.game_active:
ship.update()
gf.update_bullets(ai_settings, screen, ship, aliens, bullets)
gf.update_aliens(ai_settings, stats, screen, ship, bullets, aliens)
gf.update_screen(ai_settings, screen, ship, aliens, bullets, stats, play_button)
run_game()
game_functions.py
import sys
import pygame
from bullet import Bullet
from alien import Alien
from time import sleep
def check_events(ai_settings, screen, ship, bullets, stats, play_button, aliens):
"""响应按键和鼠标事件"""
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
check_keydown_events(event, ai_settings, screen, ship, bullets, stats, aliens)
elif event.type == pygame.KEYUP:
check_keyup_events(event, ship)
elif event.type == pygame.MOUSEBUTTONDOWN:
mouse_x, mouse_y = pygame.mouse.get_pos()
check_play_button(stats, play_button, mouse_x, mouse_y, aliens, bullets, ai_settings, screen, ship)
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_keydown_events(event, ai_settings, screen, ship, bullets, stats, aliens):
"""响应按键"""
if event.key == pygame.K_RIGHT:
#向右移动飞船
ship.moving_right = True
elif event.key == pygame.K_LEFT:
#向左移动飞船
ship.moving_left = True
elif event.key == pygame.K_SPACE:
file_bullets(ai_settings, screen, ship, bullets)
elif event.key == pygame.K_p:
if not stats.game_active:
start_game(stats, aliens, bulle