任务:
- 创建一个空的Pygame窗口
- 添加设置类
1.1:创建 Pygame 窗口以及响应用户输入
alien_invasion.py
import sys
import pygame
def run_game():
# 初始化游戏并创建一个屏幕对象
pygame.init()
screen = pygame.display.set_mode((1200, 800))
pygame.display.set_caption("外星人入侵")
# 开始游戏的主循环
while True:
# 监视键盘和鼠标事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
# 让最近绘制的屏幕可见
pygame.display.flip()
run_game()
理解注释
- 代码行pygame.init()初始化背景设置
- 调用pygame.display.set_mode()来创建一个名为screen的显示窗口
- 实参(1200, 800)是一个元组,指定了游戏窗口的尺寸
- 对象screen是一个surface。在Pygame中, surface是屏幕的一部分,用于显示游戏元素。
- 我们激活游戏的动画循环后,每经过一次循环都将自动重绘这个surface。
- 这个游戏由一个while循环控制,其中包含一个事件循环以及管理屏幕更新的代码。
- 为访问Pygame检测到的事件,我们使用方法pygame.event.get()
- 玩家单击游戏窗口的关闭按钮时,将检测到pygame.QUIT事件,而我们调用sys.exit()来退出游戏
- pygame.display.flip(),命令Pygame让最近绘制的屏幕可见,pygame.display.flip()将不断更新屏幕,以显示元 素的新位置,并在原来的位置隐藏元素,从而营造平滑移动的效果。
- 最后一行调用run_game(),这将初始化游戏并开始主循环
1.2设置背景颜色
alien_invasion.py
--snip--
def run_game():
--snip--
pygame.display.set_caption("外星人入侵")
# 设置背景颜色
bg_color = (230, 230, 230)
# 开始游戏的主循环
while True:
# 监视键盘和鼠标事件
--snip--
# 每次循环时都会重绘屏幕
screen.fill(bg_color)
# 让最近绘制的屏幕可见
pygame.display.flip()
run_game()
理解注释
- 我们创建了一种背景色,并将其存储在bg_color中
- 我们调用方法screen.fill(),用背景色填充屏幕
1.3创建设置类
settings.py
class Settings():
"""存储外星人入侵所有设置"""
def __init__(self):
"""初始化游戏的设置"""
# 屏幕设置
self.screen_width = 1200
self.screen_height = 800
self.bg_color = (230, 230, 230)
alien_invasion
import sys
import pygame
from settings import Settings
def run_game():
# 初始化游戏并创建一个屏幕对象
pygame.init()
pygame.display.set_caption("外星人入侵")
ai_settings = Settings()
screen = pygame.display.set_mode(
(ai_settings.screen_width, ai_settings.screen_height))
# 开始游戏的主循环
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()
理解注释
在主程序文件中,我们导入Settings类,调用pygame.init(),再创建一个Settings实例,并将其存储在变量 ai_settings中。创建屏幕时,使用了ai_settings的属性screen_width和screen_height;接下来填充屏幕时,也使用了ai_settings来访问背景色。
Python外星人入侵游戏(一)
Python外星人入侵游戏(三)
网友评论