• pygame是怎么实现游戏效果的?
    一个拿得出手的游戏肯定不会只有单调的cmd命令行窗口,所以和图形库一样,pygame会首先新建一块用来显示图像内容的画布,并通过控制一个游戏主循环来不停的对画布内容进行更新,以呈现出更加丰富的视觉效果。

使用pygame开发游戏时,我们需要关注的是游戏主循环,因为游戏的主要实现逻辑都在这里面实现。

接下来来实现我们的第一个pygame程序。

代码:

import pygame
from pygame import locals
from sys import exit

TITLE = "第一个pygame程序"
SCREEN_SIZE = (960, 540)
is_continue = True

pygame.init()
pygame.display.set_caption(TITLE)
screen = pygame.display.set_mode(SCREEN_SIZE, 0, 32)

screen.fill((125, 150, 100))

while is_continue:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()
        elif event.type == pygame.KEYDOWN:
            is_continue = False
    pygame.display.update()

详细注释:

#导入库
import pygame
from pygame import locals
from sys import exit

# 顶部标题
TITLE = "第一个pygame程序"
# 画布尺寸
SCREEN_SIZE = (960, 540)
# 控制游戏主循环
is_continue = True

# 初始化pygame。
# ps: 可以理解为在这一步准备pygame画布
pygame.init()
# 设置画布顶部显示的标题
pygame.display.set_caption(TITLE)
# 设置画布的尺寸以及展示的位置(锚点位于画布左上角)
# 因为需要对这块画布进行一些操作
# 所以使用一个 screen 变量接收这块画布
screen = pygame.display.set_mode(SCREEN_SIZE, 0, 32)

# 使用一种颜色填充整块画布
screen.fill((125, 150, 100))

# 游戏主循环
while is_continue:
    # 主循环的事件监听
    for event in pygame.event.get():
        # 事件监听使用 for 循环完成
        # 并且这一个 pygame.QUIT 的判断必须存在
        # 否则会陷入一个死循环
        if event.type == pygame.QUIT:
            exit()
        # 按下键盘任意键退出主循环
        elif event.type == pygame.KEYDOWN:
            is_continue = False
    #更新画布内容
    pygame.display.update()