Python编写游戏——拼图游戏

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),此时窗口会显示这次游戏之前的最好成绩,以及玩家的用时,如果玩家的用时少于之前的最好成绩,则将玩家的用时作新的最好成绩。

图1 随机打乱后的图像 

图2 拼图成功后的图像

  • 6
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值