Python编写游戏需要用到pgzrun模块。但不能用pip install pgzrun进行安装,正确的库名是pgzero,pip install pgzero。
Python版本:Python 3.6.4或以上版本。
pgzrun模块以及一些Python自带的标准模块。
安装Python并添加到环境变量,pip安装需要的相关模块即可。
Python在各个领域都有着丰富的第三方库,pygame是python在游戏领域的应用库,可以用来开发各种不同的游戏。但是对于初学者来说,还是存在一定的门槛。
pgzero(PyGame zero)是在PyGame基础上做了进一步的封装,使得设计一款游戏十分的方便。
安装语法:
pip install pgzero # 注意不是pip install pgzrun
在运行Python文件目录下建二个文件夹:images和fonts。
注意:必须要在文件同一个目录下新建一个images和fonts文件夹,角色图片(默认是png格式)全部放在images文件夹、中文字库(默认为ttf字库)放在fonts文件夹。将需要的字库从网上下载或从C:\Windows\fonts目录复制到此fonts文件夹。
1.引出游戏窗口
import pgzrun # 库安装名为pgzero,导入名为pgzrun
2.全局变量和初始化信息
TITLE = '拼图游戏' # 窗口标题
WIDTH = 400 # 窗口宽度
HEIGHT = 500 # 窗口高度
3.绘制游戏元素
def draw():
pass
4.更新游戏状态
def update():
pass
5.处理键盘事件
def on_key_down():
pass
6.处理鼠标事件
def on_mouse_down():
pass
7.执行游戏程序
pgzrun.go()
8.载入游戏角色
Actor()用于加载游戏角色,是PyGames 0显示图像的方式。图像必须是存储在位于与游戏脚本相同位置的images文件夹。
9.绘制图形和文字
screen.draw的circle、filled_circle、filled_rect、line、rect、text、textbox可以绘制图形和文字。
画圆:
screen.draw.circle(pos, radius, color)
式中:pos为圆心位置,radius为半径,color为颜色
画填色圆:
screen.draw.filled_circle(pos, radius, color)
式中:pos为圆心位置,radius为半径,color为颜色
画矩形:
screen.draw.rect(rect, color)
式中:rect为以像素为单位的矩形左上角、右下角坐标,color为颜色
例如:
screen.draw.rect(Rect((x,y), (w, h)), 'red')
其中(x, y)为矩形左上角坐标,w为矩形的宽度,h为矩形的高度,'red'为红色
画填色矩形:
screen.draw.filled_rect(rect, color)
式中:rect为以像素为单位的矩形左上角、右下角坐标,color为颜色
写文字:
单行文本框:
screen.draw.text(*args, **kwargs)
式中:args为参数列表,kwargs为属性列表(属性=值)
常用属性,如:
screen.draw.text(text, (x, y), fontname=字库名, fontsize=字体大小(磅值), color=颜色)
式中:text为需要输出的文字,(x, y)为位置坐标,fontname所用字体,默认为ttf字库,且必须是存储在位于与游戏脚本相同位置的fonts文件夹。
多行文本框:
screen.draw.textbox(*args, **kwargs)
式中:args为参数列表
10.目录结构
五、拼图游戏源代码
将一幅熊猫图(750×500),切割成125×125的24幅拼图块,排列成4行6列。然后按了随机位置打乱顺序,为了使拼图块更明显,在拼图块间加网格线。玩家通过鼠标点击两拼图块进行交换,使打乱顺序的图像恢复正常,记录用时多少,并结束游戏。以时间短者为胜。完整代码如下。
六、执行效果
运行时先会充分打乱24幅图片排序(见图1),通过点击两幅拼图块进行拼图块交换,以实现恢复原图(见图2),此时窗口会显示这次游戏之前的最好成绩,以及玩家的用时,如果玩家的用时少于之前的最好成绩,则将玩家的用时作新的最好成绩。
图2 拼图成功后的图像