欢迎回到我们的 《零基础:100个小案例玩转Python软件开发!》 系列!在前面我们已经学了一节游戏入门基础课《派米对对碰》,大家是否还有印象呢?
零基础:100个小案例玩转Python游戏开发!第三节:对对碰游戏(上)
100个小案例玩转Python开发!第三节:对对碰游戏(下)
在本节课,我将继续教大家如何利用PyMe 来开发人人都爱玩的《坦克大战》,让我们开始吧!
首先,下载PyMe1.5.6.3:https://pyme.lanzoum.com/iAUzv3guirpa
一、创建工程
启动PyMe后,创建一个"2D游戏"类型的项目,填写项目名称"TankGame",点击"确定"按钮,创建坦克工程。

进入项目后,首先打开的是启动场景编辑器,在右边面板里设置窗口标题TankGame,将画布设置为宽 800,高 600,因为目前没有任何素材,所以我们暂时不进行编辑,双击下方文件与资源栏的"Resources"文件夹。

"Resources"文件夹主要用来存放游戏资源文件,双击后可以看到Resources文件夹下有Fonts文件夹和Scene文件夹。
-
Fonts:用于存放TTF字体文件,以方便显示中文。
-
Scenes:用于存放场景信息配置文件,记录每个场景的资源和布局。
二、制作场景
在这个文件夹下,用鼠标单击,在弹出菜单可以看到许多功能,这里可以选择新建文件夹,创建一个Image文件夹用于存放图片。

创建好Images文件夹后,我们需要准备一些素材,包括一些格子地图用的地面素材。

我们用鼠标右键在文件资源栏单击,在弹出菜单项"创建图片素材"下选择"图片素材下载"。

在弹出的图素库对话框中,在"格子地图"项点选对应的格子地图图片,就可以将其下载到到Images文件夹,作为游戏中的地图格子资源图片。

除此外,还需要再准备一些素材作为放置在地面上的物体,从格子地图中找到Scene分类下的图片生成出来。

除了这些图片素材还不够,继续在弹出的图片素材库中选择"飞机坦克"分类,分别点击四种坦克图片,将图片下载到当前文件夹。

在弹出的图片素材库中选择"图标"分类,分别点击药瓶和基地图标,也下载下来。
-
红色药瓶:增加生命值。
-
蓝色药瓶:无敌的效果。
-
基地图标:作为我方的基地,如果被敌方击中,本局失败。

格子中的素材准备的差不多了,下面我们来制作场景,返回工程文件夹,用鼠标右键单击,在弹出菜单中新建游戏场景。

格子中的素材准备的差不多了,下面我们来制作场景,返回工程文件夹,用鼠标右键单击,在弹出菜单中新建游戏场景,在场景名称输入框填写War,创建出一个新的War场景,双击场景图标进入场景,在场景的右边侧栏中点击"+"新建一个图层,使用默认Layer0名就可以,点选格子模式,设置格子行数10行,列数10列,格子大小使用图片素材尺寸宽度60,高度60,保持起点X和Y都为0,点击"确定"按钮。

创建好图层后,我们需要为格子设置素材,在右边图片选项页的根结点"图片"上用鼠标右键单击,在弹出菜单选择"导入"。

在弹出的"资源文件"对话框中选择Resources下Images中的地图格子、药瓶、基地图片和物体图片。

在弹出的"资源文件"对话框中选择Resources下Images中的地图格子、药瓶、基地图片,然后就可以点选图片项,在格子上按下鼠标左键设置格子使用当前素材。

在PyMe中,你可以创建多层网格,所在开发坦克游戏,我们需要在当前的地面层之上再创建一层格子图层,用来放置物体图片,格子的设置和前面的地表图层一致。

创建出Layer1后,保持选中它,并从图片资源中选择一些墙面、铁块、树,在Layer1图层的格子中进行摆放。

摆放好之后,在墙、铁块、木桶图片上用鼠标右键单击,弹出菜单选择"设置图片碰撞"。

在弹出的"设置图片碰撞"对话框中,为碰撞类型选"占用格子",行数1,列数1,这样当前图片放置后,就会对当前格子的碰撞标记设为1。

设置完后,当前场景中的墙、铁块、木桶图片格子就会打上叉,代表这些格子有碰撞标记。在PyMe中采用这种基于图素的方式设置阻挡,地图制作会非常方便。

新建一个图层,设置为Tank层,采用自由模式,用来显示坦克。

点击顶部位置点,创建一个出生位置点。

创建好后在中间位置点一下,就创建出一个我方坦克出生点,再继续创建Enemy位置点,在上方的合适位置点击三次,作为敌方坦克出生点。

CTRL+S保存一下,暂时图层就做好了,下面我们来制作界面。

四、制作界面
返回到资源文件夹,创建一个UI文件夹,用于存放界面。

用鼠标右键单击,在弹出的输入界面名称对话框中输入StartUI,用于制作初始界面。

创建出界面后,我们首先选择Hello World标题,然后在属性栏为其选择使用的字体为"SourceHanSansCN-Normal.ttf",也就是Resources\Fonts下的中文TTF字体。

选择中文字体后,将文字内容改为"坦克大战",然后我们再来做一张封面图。在文件资源栏中,用鼠标右键单击,在弹出菜单项中选择:"创建图片素材"->"AI生成素材图"。

在AI生成图片对话框里选择生成tankwar.png,图片类型可以是主题海报、这里我们使用智谱AI的ZhiPu-GLM-Image大模型,图片宽800,高600,图片风格选择:赛博朋克,主题填写:
游戏主题是"坦克大战",构图要素:
前景:一个坦克正在开火
中景:激烈交战的战场,激光与爆炸效果
远景:城市和废墟

确定后,AI开始进行生成。

生成结束后,图片就生成出来啦~

在界面上为Form_1设置背景图为当前生成的图片,然后拖动原文字到合适位置,再拖动一个按钮到界面中间:

现在我们来为按钮生成图片,在当前文件夹右键弹出菜单选择"创建图片素材"->"图片素材下载",找到"界面元素"分类下的"Button",将"开始游戏"的两张图片下载下来。

选中按钮,然后在顶部为按钮设置普通状态、悬停状态和按下状态的图片,目前只有两张图,所以将普通状态和按下状态都设为第一张图,悬停状态设为第二张图就很有效果啦。

选中按钮并在右边"事件响应"面板,双击PickUp事件属性栏,为鼠标点击绑定函数。

进入场景的代码编辑器后,在对应的事件绑定函数中填写GameFun.SwitchScene("War"),代表点击按钮后切换到场景War。

CTRL+S保存一下,返回到工程文件夹根文件夹下,然后双击启动场景TankGame,创建一个UI图层,然后在右下方的"图层"鼠标右键,通过弹出菜单导入刚创建的界面StartUI.py。

导入完成后,点选界面,在场景中点一下,就创建出一个界面,选中它后,在下方设置X,Y为0,0,与场景对齐。

运行一下,就可以看到开头视频中的效果啦!OK,这一节课就到这里,下一节我们继续完成后半部分的开发工作。欢迎对使用Python开发游戏感兴趣的朋友加入PyMe游戏开发者群,我们将持续发布PyMe游戏教程!