创建Pygame窗口以及响应用户输入
首先,我们创建一个空的Pygame窗口
alien_invasion.py
import sys
import pygame
def run_game():
# 初始化游戏并创建一个屏幕对象
pygame.init()
screen = pygame.display.set_mode((1200, 800))
pygame.display.set_caption("Alien Invasion")
# 开始游戏的主循环
while True:
# 监视键盘和鼠标事件
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
# 让最近绘制的屏幕可见
pygame.display.flip()
run_game()
此时运行这些代码,你将看到一个空的Pygame窗口。
设置背景色
Pygame默认创建一个黑色屏幕,这太乏味了。下面来将背景设置为另一种颜色:
alien_invasion.py
import sys
import pygame
def run_game():
# 初始化游戏并创建一个屏幕对象
pygame.init()
screen = pygame.display.set_mode((1200, 800))
pygame.display.set_caption("Alien Invasion")
# 开始游戏的主循环
# 设置背景色
bg_color = (230, 230, 230)
while True:
# 监视键盘和鼠标事件
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
# 让最近绘制的屏幕可见
# 每次循环时都重绘屏幕
screen.fill(bg_color)
pygame.display.flip()
run_game()
创建设置类
每次给游戏添加新功能时,通常也将引入一些新设置。下面来编写一个名为settings 的模块,其中包含一个名为Settings 的类,用于将所有设置存储在一个地方,以免在代 码中到处添加设置。这样,我们就能传递一个设置对象,而不是众多不同的设置。另外,这让函数调用更简单,且在项目增大时修改游戏的外观更容易:要修改游戏,只需修改 settings.py
中的一些值,而无需查找散布在文件中的不同设置。
settings.py
class Settings():
"""存储《外星人入侵》的所有设置的类"""
def __init__(self):
"""初始化游戏的设置"""
# 屏幕设置
self.screen_width = 1200
self.screen_height = 800
self.bg_color = (230, 230, 230)
为创建Settings 实例并使用它来访问设置,将alien_invasion.py
修改成下面这样:
import sys
import pygame
from settings import Settings
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")
while True:
# 监视键盘和鼠标事件
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
# 让最近绘制的屏幕可见
# 每次循环时都重绘屏幕
screen.fill(ai_settings.bg_color)
pygame.display.flip()
run_game()