构建模块game_functions,存储大量让游戏《飞机大战》运行的函数,以简化主程序。
首先创建事件监听函数check_events()和屏幕绘制刷新函数update_screen(),这样主函数run_game可简化。
import sys import pygame def check_events(): """响应按键和鼠标事件""" for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() def update_screen(ai_settings, screen, ship): """更新屏幕上的图像,并切换到新屏幕""" # 每次循环时都重绘屏幕 screen.fill(ai_settings.bg_color) ship.blitme() # 让最近绘制的屏幕可见 pygame.display.flip()
在主函数中导入game_functions模块,并赋予别名gf简化。while True中循环的每个功能有一个game_functions中的函数对应实现,逻辑更清晰。
import pygame from settings import Settings from ship import Ship import game_functions as gf def run_game(): # 初始化pygame、设置和屏幕对象 pygame.init() ai_settings = Settings() screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_heigth)) pygame.display.set_caption("飞机大战") # 创建一艘飞船