玩转Python开发游戏《坦克大战》(上)

欢迎回到我们的 《零基础: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游戏教程!

相关推荐
资源分享助手2 天前
我!勇者?The Warrior免安装中文版下载与玩法体验
游戏
云起SAAS2 天前
抖音小游戏源码 - 消消乐 | 含激励广告+成就系统 | 开箱即用商业级消除游戏模板
android·游戏·广告联盟·看激励广告联盟流量主·抖音小游戏源码 - 消消乐
津津有味道2 天前
一键写入启动游戏NDEF复合记录NFC标签vb6源码
游戏·标签·nfc·ndef·复合记录
游乐码2 天前
Unity基础(四)向量相关
游戏·unity·游戏引擎
阿阳微客2 天前
网易Buff游戏搬砖,长期可做!
笔记·学习·游戏
Kurisu5752 天前
探灵直播2026最新官方正版免费下载 一键转存 永久更新 (看到速转存 资源随时走丢)
游戏·游戏引擎·游戏程序·动画·关卡设计
STDD2 天前
Abiotic Factor多人生存建筑游戏《非生物因素》 专用服务器搭建教程
服务器·数据库·游戏
开开心心就好2 天前
带OCR识别的电子发票打印工具
运维·javascript·科技·游戏·青少年编程·ocr·powerpoint
经济元宇宙2 天前
HOPE星火燎原不是希望工程,也不是游戏项目:项目名称与定位澄清
游戏
2601_950316062 天前
XBOX360 KINECT体感游戏合集109个
游戏