Nautical
前言
5月份的时候参加市里的 Python 创意编程比赛,限定使用的库里包含 pygame,于是就做了个简单的小游戏
开发 Nautical 的时候基本在写前端,所以游戏里很多东西都像 Vue 一样把各种功能写成组件。
游戏画面与设计稿
使用 Adobe XD 进行界面设计
开始页
开始页中的背景是会运动的,抄的去年比赛的主要代码(背景运动)
背景运动的原理是导入两次背景图片,把其中的一个图片进行水平翻转,然后把两张图片放在一起,通过不断改变图片的位置,实现背景的运动。
造船厂(选择船只)
交易界面
游戏界面(航行)
背景就是从 Minecraft 的小地图截出来的(笑
地图编辑器
游戏地图划分原理是把地图划分成若干个小格子,然后把每个格子的信息存储在一个二维数组里,这样就可以通过数组的下标来获取格子的信息。
游戏玩法
购买船只,选择地图,航海,进行贸易
全程仅需鼠标左键操作
下载游玩
with python
1
2
3
4git clone https://github.com/jz0ojiang/Nautical.git
cd Nautical
pip install pygame
python main.pywithout python
下载 Release 中的 exe 版本
自定义游戏
地图编辑器
1 | python mapeditor.py [map] |
[map] 为 地图编号,默认为 0
(release 版本)
1 | Nautical_MapEditor.exe [map] |
(应该能用)
新增/修改地图
修改 _data/maps 下的 json 文件即可
background : 背景图片路径
block: 固定值 请勿修改
spawn: 船只出生点(地图编辑器可以直接进行修改)
A/B/C.sell : 岛屿所出售的商品(为 items.json 中物品的 id)
A/B/C.saleable : 在岛屿中收购价高的商品(会对售价本身溢价)
A/B/C.unsaleable : 在岛屿中收购价低的商品(会低于售价本身)
map.prop : 地图比例
新增/修改物品
_data/items.json 为所有物品的配置
name : 物品名称
price : 物品默认售价
icon : 物品图标路径
id : 物品id,不能重复
新增/修改船只
_data/ships.json 为所有船只配置
name : 船只名称
capacity : 船只容量(可以装载物品的数量)
speed : 船只速度(回合内可以航行的次数)
danger : 船只危险程度(越大越危险)
durable : 船只耐久度(有多抗揍)
max_durable : 船只最大耐久度(通常等于 durable)
icon : 船只图标路径
price : 船只售价
建议
建议只对配置进行修改,新增可能会导致渲染出现问题(懒得写兼容)