重磅发布——2D's 3D Game


博客浏览次数:


点击跳转1.0版本的洛谷题目 2023.8.12

点击跳转1.5版本的洛谷文章 2024.2.8


该游戏历经约一年时间,终于在今天发布了。游戏使用C++制作,依附于Windows平台(Windows的颜色控制头文件需要),是我喜欢的控制台游戏风。为什么拖这么久呢?一是不知道如何升级,二是正在参赛不好发布。至于为什么做新版本,是因为老师突然告诉我比赛又有了(去年的作品请见博客之超级工具箱),想到之前有搞过叫2D's 3D Game这么个玩意就重新整了整发布。

强迫症特色:程序有一套完备的防输错数的判定系统,比如地图大小你要是输入负数直接不给你下一步,选择出生位置和结束位置时坐标输入的不在地图上、或者模式不是1234中的一个,也不给你下一步,甚至如果你出生位置和结束位置重复了(包括只有1行地图的左上角和左下角重叠的情况),也会给您识别出来。(提取自评委简介)

等宽输出:若地图其中一个数有大于1个数位,如100,强制其它格子按照最大数位的宽度输出。

最新版本命名为Share版,不仅是分享,更是想创建一个游玩的Community。后续会加入竞速版本以及通关反作弊验证。(咕咕咕)

游玩方式是复制源码自行编译,游戏源码和发布时间都在底部。


给评委看的简介,相信你也能看懂:

2D's 3D Game 地图探险 介绍文档
亲爱的评委:
如果您不读这个文档,你甚至不知道这个游戏应该怎么去操作。请务必读完,作者的文采“非常好”。(您也可以跳到第3页底下看一下总结的规则,但是只看那个的话不易理解)

这个游戏可以帮助你学习深度优先搜索和广度优先搜索,在地图里面探索时可以存档,走错的时候能读档回溯,继续探索;还能锻炼你的抽象思维,只要关掉多彩模式,想象格子高度组成的三维地图,并一步步走。

假装你在Minecraft里面玩耍。为了把问题简化,规定你只能在↑↓←→↖↗↙↘方向移动,每次移动一格。突然,你遇到了一个俯视图为矩形的地图,地图每个格子高度各异,最低为0,最高为9。一个像柱子一样直插云霄的9屹立在你的面前,你脚下站着的是0。地图门口有个告示牌:“这里是2D's 3D Game!‘亲爱的’史蒂夫,从这个迷宫的一个角落出发,到达另一个角落,即可找到——绿宝石。”
你说:“啊?绿宝石?我还不如去村民家抢嘞!”
从三个视图的俯视图来看一个类似上面地图一样的方块堆叠的东西,可以把方块的高度依次表示,例如:
1 3 2
这个就表示了一个领奖台的方块样式。 长这样:

在2D's 3D Game中,会有一个m * n的地图,地图的每个数就代表了对应位置的方块的高度。
你看着面前的告示牌,默默选择了左上角到右下角。突然不小心飞过来一个二向箔(啊!)你被拍扁进了二维世界,地图从立体方块也变成了一个表示俯视图的方块高度的地图。

0 1 2 3 4 5 0
9 5 4 3 2 1 0
X X X X X X X(省略)

(未打开多彩模式)
看到没有?那个9就是屹立的那个柱子!
你说:“这不简简单单,顺着第一行自动跳跃,大跳到0,再下一格,不就赢了。”
然而,当你按d的时候,却迟迟没有反应。——哦,还要输入回车(真麻烦)。到了5,正准备跳下去,突然飞过来一个消息:YOU CANNOT DO THIS!!!禁止通行!!!
WTF!(Welcome To Facebook)这咋不能走?你抬头,才看见游戏规则:
↑↓←→这几个方向,有且仅有这几种走法:平移;下一格;下两格;上一格。如果下超过两格,就会摔死;而且不能二段跳。
你说:“那算了,迷你世界,启动!——啊,我怎么出不去!救命啊!!!”
聪明的你从5退回到了3,往下走了一格,再一直向右,这样就通关啦!
突然飞过来一个消息:诶诶还没结束呢,作者介绍游戏玩法的使命还没结束呢,来,下一关!
WTF!!!
1 2 9
3 1 9
3 2 9
4 1 9
9 3 9
1 2 4
消息:这一关来斜着走,祝好运!
接下来为了表示清楚你所在位置,将以(数字)[行][列]的形式说明。
你在1[1][1]看见右下方也有个1,身为老玩家你立马按了sd斜着走。——诶,不行!这里,↖↗↙↘的按键分别是qezc。你骂了一句,按下了c(并回车),突然又飞过来一条消息:YOU CANNOT DO THIS!!!禁止通行!!!
啊?怎么不能走?
因为3[2][1]和2[1][2]挡住了你的去路!如果把这两个其中一个改成1或0,你就能旋转跳一下跳到1[2][2]了。
你说:“行吧。”从1[1][1]到2[1][2]再到1[2][2],可真是愉快呢。
你想去1[4][1],想着能不能连着输ss再回车……诶!可以!事实上,你可以把通关的整串操作都一起输进去再回车(哈哈)。
扯远了。你发现到了1[4][1]之后,不能下去走了,骂自己不会二段跳,又回到了2[3][2]。到4[4][1],试了一下按c旋转跳,还真跳到3[5][2]!
你又想要按个c,旋转跳到4[6][3]……对不起,不行!斜着移动只能平移、下一格、下两格!
你说:“什么鬼游戏!劳资不玩啦!!!”

总结一下游戏的规则:
1.玩家可以在上下左右四个方向移动,每次能平移、上一格、下一格、下两格。
2.玩家可以在左上、右上、左下和右下四个方向移动,每次可以平移;符合以下条件时,可以下一格或下两格:
a b
c d
(欲从a走到d)
当b≤a或c≤a时,可以从a到d。
3.玩家选择↖(地图左上角,下同)↗↙↘中任两个不同的位置,或者任两个不同的坐标作为出生位置和结束位置,从出生位置走到结束位置就赢了(这不废话吗)。

突然!突然!飞过来一个标签,啪的打到你的脸上。你摘下来一看:
“按数字键有惊喜。”
嗯?

0重玩(回到出生点),1选择玩家颜色,2存档读档,3自定义按键,4开关多彩模式,5开关显示可到达地点,6显示坐标,7直接传送,8修改方块,9还原地图

我们来一个一个介绍。
0和1这两个就不必多说了。2存档读档有10个档位,可以储存游戏时候玩家的坐标。这个好处是,可以用来学习深度优先搜索和广度优先搜索,以及回溯算法。当然,你可以直接修改源代码中的sav[]数组的定义来增加存档数目(必须把管理存档的代码里面的那个for循环的第二个条件的10一并改了),
3自定义按键,你可以定义你游戏按键为你喜欢的任意字符(必须是ASCII字符表里的),例如O']\`~%@都没有问,这个按键储存在char字符W、S、A、D、Q、E、Z、C中。
4开关多彩模式,根据你地图的最高点程序设置了10套方案(0~9),储存在cll[][]数组里,其中第一个[]代表了地图最高点,也就是选择大方案;第二个[]代表了每个格子的高度,根据格子高度输出对应颜色。如果这个格子高度超出9,就输出粉色。
5开关显示可到达地点,你在当前位置能一步之内走到的格子都会用绿色输出,并且这些格子不支持多彩模式(其它格子不影响)
6、7不说了,8修改方块,你可以修改一个地图上存在的方块,修改为任意整数都可以。
9还原地图,还原成修改方块前你输入的地图的样子,不可逆。
程序还精心准备了一个统计你作弊次数的变量,7、8都会被统计进去。
0重玩,这里说一下。重玩后使用的是修改后的地图,并且你一开始选择的出生点和结束点都不能改变,作弊次数会清零,存档会保留。

程序还还准备了一套完备的防输错数(大部分是评委您故意的)的判定系统,比如地图大小你要是输入负数直接不给你下一步,选择出生位置和结束位置时坐标输入的不在地图上、或者模式不是1234中的一个,也不给你下一步,嘿嘿,甚至如果你出生位置和结束位置重复了(包括只有1行地图的左上角和左下角重叠的情况),咱也会给您识别出来,哈。

现在,开始你的2D's 3D Game之旅吧![1]

[1]引用Phigros游戏教学最后一句“现在,开始你的Phigros之旅吧!”


游戏内自述:

提示: 游玩时可以连续输入按键再回车。
这个介绍是老版本遗留的,新版新写了个介绍(参赛时候的要求),最好是看那个。新做了个教程程序,可以配合这个主程序使用。
by Alone, IQ Online Studio 智商在线工作室(非真实存在的工作室)。 QQ:34067513 See the website 查看网站: https://melonchats.github.io/melon/a.html
详细介绍(1.0原始介绍和2.0视频介绍,因为是参赛作品会晚上线)可见https://www.luogu.com.cn/blog/perryding/2ds3d-game。以下是精简版。
这是一个用二维的矩阵来玩三维的地图的游戏,游戏中的方块像Minecraft一样, 地图中的数字代表了俯视图中每一格地面方块的高度。
如,地图中的2代表了这一格有两个竖着垒的方块。
你可以往上下左右平移,你也可以往上爬一格、往下走一格、往下走两格,如从1到2,2到3等。
你也可以往左上,右上,左下,右下平移。你所在位置和目标位置组成的田字格中,如果其它两个方块的高度都小于等于所在位置和目标位置的高度,那你就能平移,否则不行。你也可以斜着下一格、下两格,但是不能往上爬。这很符合现实物理和Minecraft。
比如说这个:
1 2
2 1
当你要从1到1, 你不能往↖↘走; 但要从2到2,可以↗↙走。

原版说明2023.6.29
by Alone, IQ Online Studio. QQ:34067513 See the website: https://melonchats.github.io/melon/a.html
this is a game that use 2d number to play 3d PaoKu. like Minecraft, the nums in map is the heights of the blocks.
for example, the num 2 just 2 blocks in MC.
To go up, you can only go up 1 height. like 1 to 2, 2 to 3 and so on. and you can only move in four directions: front ^, back v, left <, right >.
To go down, you can go down 1 height or 2 height, if above this num, you'll fall and lose some health. isn't it? and you can move in eight directions.
To go down or go front, you should notice: if your direction is left-front, right-front, left-back, right-back, you can move when the other two num beside below or equal your now num and expect num.
like this:
1 2
2 1
when you are in 1, you can't use right-back or left-front to the other 1, but you can use right-front and left-back from 2 to 2.


再次感谢@kjchmc的网盘!点击进入鸣谢界面


版本参考:

初代 v1.0 2023.6.29/洛谷发布2023.8.12

参赛 v2.0 开始制作2024.2.26/完工2024.3.14

参赛自用/Self版(有自述) v2.0

Share v2.5(此版本CPU占用少,但是等宽输出可能刷新不及时)

Share-HighCPU v2.5(此版本每走一步重新计算一次地图输出,CPU占用高)


Github仓库(该链接为新仓库,临时仓库为/melon


下载链接:

Github Release发布版本

链接


UTF-8版本

整合压缩包


ANSI版本

整合压缩包


由于我的Windows是英文版,编码容易乱,所以给出txt格式UTF-8/ANSI编码版本各一份。

1.x版本内置一个地图,2.x版本内置两个地图。

如果我勤奋的话,会考虑出一个地图编辑器(



2024.7.31


返回博客主页