玩转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 小时前
宇宙版地球模拟器
游戏·unity·游戏引擎·贴图·模型
wanhengidc2 小时前
《三国志异闻录》搬砖新游戏 云手机
运维·服务器·数据库·游戏·智能手机
好家伙VCC3 小时前
# 发散创新:用 Rust构建高性能游戏日系统,从零实现事件驱动架构 在现代游戏开发中,**性能与可扩展性**是核心命题。传统基于
java·python·游戏·架构·rust
魔士于安3 小时前
氛围感游戏场景,天空盒,带地形,附赠一个空要塞
游戏·unity·游戏引擎·贴图
上海云盾-小余5 小时前
CC 攻击与 DDoS 联动防护:如何构建一体化流量清洗架构
网络·安全·游戏·架构·ddos
沙振宇9 小时前
【Web】使用Vue3+PlayCanvas开发3D游戏(六)模拟自驾场景SR+3D可视化
前端·游戏·3d·vue3·playcanvas
风酥糖9 小时前
Godot游戏练习01-第15节-敌人生成动画,翻转,碰撞
游戏·游戏引擎·godot
呆呆敲代码的小Y10 小时前
Unity+AI 用一句话制作完整小游戏:飞翔的牛马【AI纯添加-0手工代码】
人工智能·游戏·unity·游戏引擎·游戏制作·unityai·一句话制作游戏
2501_9181269110 小时前
学习所有6502写游戏动作的语句
汇编·嵌入式硬件·学习·游戏·个人开发
2501_9181269110 小时前
学习所有6502游戏的系统
java·汇编·嵌入式硬件·学习·游戏