第二章:pygame程序开发最小框架设计
第一节:pygame程序开发流程
2.1.1使用pygame开发程序的基本流程步骤
第一步:导入模块(import)
第二步:初始化模块(init()函数)
第三步:创建窗口(set_mode()函数)
第四步:窗口图像渲染(surface对象)
第五步:设置游戏窗口状态(清屏,绘制及刷新)
2.1.2导入pygame模块
在上一章中编写的程序前两行是使用pygame编写程序是基本都需要用到的模块。
import pygame
form pygame.locals import *
其中,第一行代码用来导入pygame包,它是pygame模块中可供使用的最顶层的包,当在程序中导入pygame包后,便可以使用其包含的大部分子模块,比如pygame.color,pygame.surface,pygame.rect等。
第二行代码使用Python中的from xx import *格式导入了pygame.locals子模块中的所有元素,pygame.locals子模块中存储了pygame中绝大部分的顶级变量与常量,比如pygame.QUIT(程序退出事件),pygame.KEYDOWN(键盘按下事件),pygame.MOUSEBUTTONDOWN(鼠标按下事件)等。
2.1.3初始化pygame
导入pyagme包后,就需要对其进行初始化了,初始化代码如下:
#初始化
pygame.init()
之所以要初始化pygame,是因为这样可以在底层初始化所有导入的pygame子模块,并且可以为即将要使用的硬件设备做准备工作,如果不初始化,则可能出现程序崩溃等一些不可设想的后果(程序会报错)。
init()初始化函数返回的是一个二元元组,其中,第一个数字代表导入成功的子模块数量,第二个数字代表导入失败的子模块数量。我们可以使用下面的代码查看init()函数的返回值。
res=pygame.init()
print("成功初始化模块个数",res[0],"失败个数",res[1])
2.1.4创建pygame窗口
导入并初始化pygame包后,就需要创建pygame窗口了,创建pygame窗口需要pygame包下的display模块中的set_mode()函数,代码如下:
screen=pygame.display.set_mode((500,200),0,32) #创建游戏窗口
set_mode函数用来创建一个图形化用户界面(graphical user interface,GUI),其语法格式如下:
set_mode(resolution=(0,0),flags=0,depth=0)
参数说明:
resolution:表示屏幕分辨率,需传入值为两个整数的一个元组,表示所要创建的窗口尺寸(宽乘高),单位为像素。如果将宽度和长度都设置为0,则会具有与显示器屏幕分辨率相同的宽度和长度。
flags:功能标志位,表示创建的主窗口样式,比如创建全屏窗口,无边框窗口等。
flags参数值及说明
参数值 | 说明 |
一个整数 | 用户设置的窗口大小 |
pygame.FULLSCREEN | 全屏显示的窗口 |
pygame.RESIZABLE | 可调整大小的窗口 |
pygame.NOFRAME | 没有边框和控制按钮的窗口 |
pygame.DOUBLEBUF | 双缓冲窗口,推荐和HWSURFACE和OPENGL一起使用 |
pygame.HWSURFACE | 硬件加速窗口,仅在FULLSCREEN下可以使用 |
pygame.OPENGL | 一个OpenGL可渲染的窗口 |
depth:控制色深,如果省略该参数,将默认使用系统的最佳和最快颜色深度,因此推荐省略该参数。
返回值:一个pygame.Surface对象(简称为Surface对象)
该函数将创建,传入的三个参数是对显示类型的请求,实际创建的显示类型将自动是系统支持的最佳匹配。
注:可以使用按位或运算符组合为复合模式类型,示例代码如下:
SIZE=WIDTH,HEIGHT=640,396
pygame.display.set_mode(SIZE,HWSURFACE|FULLSCREEN,32)
2.1.5实例:演示pygame窗口模式的切换
编写一个小程序,实现pygame窗口模式的切换。具体代码如下:
图片资源(请自行截图):
import sys
import pygame
from pygame.locals import *
title = "演示pygame窗口模式的切换"
icon_img = "ball.jpg"
# pygame全局初始化
pygame.init()
# 初始化窗口
screen = pygame.display.set_mode((640, 396), 0, 32)
# 窗口标题设置
pygame.display.set_caption(title)
icon_sur = pygame.image.load(icon_img)
# 窗口图标设置
pygame.display.set_icon(icon_sur)
Fullscreen = False # 控制屏幕状态
while True:
for event in pygame.event.get(): # 事件索取
if event.type == QUIT: # 程序退出按钮
sys.exit()
if event.type == KEYDOWN: # 键盘事件
if event.key == K_f: # 敲击f 键
Fullscreen = not Fullscreen
if Fullscreen:
screen = pygame.display.set_mode((640, 396), \
FULLSCREEN, 32)
else:
screen = pygame.display.set_mode((640, 396), 0, 32)
pygame.display.flip() # 更新屏幕显示
上面代码中,第八行为设置pygame窗口标题,第九行代码加载了一张图片,以便在第十行代码中将其设置为pygame窗口的图标;另外,pygame窗口默认为窗口模式显示,上面代码中添加了监听键盘事件代码,只要敲击键盘<F>键,pygame窗口显示模式就会在窗口模式和全屏模式之间切换。
注:上面代码中,图形的URL用的是相对路径,因此需要将窗口图标图片和代码文件放置于同一个文件夹中。
第二节:pygame最小开发框架
使用pygame开发,有一个所谓的最小开发框架,可以帮助我们在进行pygame开发时能够快速看到程序运行效果图,从而极大的提升开发效率。
pygame最小开发框架代码如下:
import sys
import pygame
from pygame.locals import *
SIZE=WIDTH,HEIGHT=640,396
FPS=60
pygame.init()
screen=pygame.display.set_mode(SIZE)
pygame.display.set_caption("pygame最小开发框架")
clock=pygame.time.Clock
#创建字体对象
font=pygame.font,Sysfont(None,60,)
running=True
#主体循环
while running:
#1.清屏
screen.fill((25,102,273))
#2.绘制
for event in pygame.event.get():
if event.type==QUIT:
pygame.quit
sys.exit()
#刷新显示
pygame.display.update()
clock.tick(FPS)
写在最后
以上就是本章的全部内容,如果这些内容对您有帮助,别忘了点赞+关注!