Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 9542|回复: 59

[命令方块] 【TRP出品】【乙烯】小游戏【扫雷】的具体原理分析

[复制链接]
发表于 2015-5-1 21:41:38 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
本帖最后由 乙烯_中国 于 2016-3-20 18:15 编辑

大家好,我是乙烯。今天给大家带来我的扫雷的原理详解以及制作过程中的思考步骤。

此贴与【TRP出品】小游戏复刻系列——扫雷【bug修复】联动,强烈建议过去兜一圈。

在之前呢,还是惯例的闲聊几句。准确的说,我发布的版本是版本6.3。这次的扫雷呢,也是补上了TRP的入组审核,虽然分量还是不够足,但是我觉得制作这样的一个作品的过程,本身就是非常快乐的。虽然在制作版本3和版本4的时候有人给我喝过倒彩,也有人说国外有人做过了。但是我觉得,因此就放弃的话是不对的。
在开坑的时候应该大约是1.7时代,那时我几乎相当于命令方面的小白,只知道有哪些指令及功能,要我自己来写指令,那是完全不可能的。但是,人是一种会在挑战中成长的生物。就在这个过程之中,我自己对命令的认识可以算是大大提升了,而实际上,平时在论坛里的厚积薄发也帮了我很多忙。此外,如果不能坚持读到这句话的人,我觉得成功路上多多少少会有坎坷。



一、整理思路
扫雷,一个风靡全球的小游戏,简单的规则,然而却能够吸引很多的玩家挑战。那么我们现在来分析一下扫雷的规则:
  • 每个被翻开的格子,如果其不是雷,则会写出其周围8个格子所包含的雷数,如果是0则会翻开周围8个格子。翻开的是雷则游戏结束。
  • 翻开的第一个格子永远不会是雷。

好的,那么现在我们确定了一个目标,制作扫雷,那么我们就可以根据规则列出一张扫雷的游戏流程表。(由于在初期计划阶段,我们大概画画就好。)

                               
登录/注册后可看大图

Ok,那么现在我们有了一个初始的计划图,现在,由于我们是要在mc里制作这样一个游戏,那我们现在开始就要将其模块化条理化并添加mc元素进去。容我们来梳理一下思路:

  • 开局:由于我们要保证第一步翻开的格子肯定不是雷,那么显而易见,我们需要在开局,即翻开第一个格子的时候,生成整个棋局,才能完全保证我们所翻的格子不是雷。而我们也要保证生成完棋局的时候确实那个格子是被翻开的。同时呢,计时器也要开始工作。
  • 游戏中:这个地方很简单,我们需要检测玩家的类左键操作和类右键操作。同时对其进行处理,而我们还需要统计场上出现的旗帜数。最后,我们还需要进行胜利判定。
  • 胜利/失败:这个重点不多,我们只需要将地图剩余未标记的雷和标记错误的格子进行反馈。或者计算出玩家的时间是否能够开启修改英雄榜的方法。
  • 重新开局:这个地方也是非常简单的。直接就可以重置地图,统计,还有时间。
  • 英雄榜:将现有玩家的分数打印出来,同时给予玩家打印自己名字的权限。简单的说就是个打字机。

让我们简洁的整理下思路:
开局:生成雷局,开始计时器。
游戏中:检测输入,统计旗帜,检测胜利。
胜利:检查时间是否低于最优记录。
失败:反馈未正确标记的格子。
重新开局:重置雷局,重置计时器。

仔细看看其实我们要做的也不是特别多嘛,压力还是不大的。那么我们现在可以再将整理过的思路进行填充,增加实现方法。在开工各个部分之前,我们需要定一个整体的规划,这样就可以使我们建造出来的各个模块能够协同工作,可以理解为是某种协议。
  • 首先,扫雷需要是哪种显示方法?当然有很多选择,但是我这里使用的是展示框配合地图的显示方法,因为展示框不是方块,是一个实体,那么就可以很方便的用选择器来进行选择及操作,它可以响应左键右键和中键,而其和地图的联动让其的显示效果丝毫不亚于方块。而操作方法也就在这时候定下来了,单纯的左键右键以及中键。
  • 其次我们现在可以考虑模块之间有哪几种交流。生成雷局的时候,由于我定的规模是初级扫雷,那么就会有十个格子被标记为雷,而这个会在游戏中和失败两个模块里用到。计时器会在胜利模块中用到。旗帜会在失败模块里用到。

二、开工
那么现在我们可以开工了。由于我们选择的是展示框显示屏,所以我们只能通过高频检测的情况来进行正常游戏。
这里我将我的电路截图进行说明,有图为证,整个扫雷的电路的确是模块化的产品:

                               
登录/注册后可看大图


制作开始。

这里是将地图进行预加载的地方,然而由于失误,我漏掉了没有雷的格子。

                               
登录/注册后可看大图

注:文中指令方块部分使用了绝对坐标,具体制作中请参考具体地图位置。

第一部分:开局


第二部分:游戏中


好的…实际上到这里,整个扫雷的主体已经完工,接下来就是一些非常简单的玩意儿。

胜利模块


失败模块


英雄榜模块
就是一个tellraw的打字机。鉴于命令过长,我将另外开贴进行说明。
请转至http://www.mcbbs.net/thread-441864-1-1.html观看


  

来自群组: The Redpixel

评分

参与人数 26人气 +47 金粒 +415 贡献 +5 收起 理由
hacccc + 2 图炸了
a6809936 + 2 MCBBS有你更精彩~
Sssss... + 2 大触我们做朋友吧!
龙腾猫跃 + 1 C2H4你个叛徒
門偂六七澍 + 2 Mcbbs有你更精彩~
xieyanze + 1 Mcbbs有你更精彩~
Soul-Tude + 1 Mcbbs有你更精彩~
FHC红石 + 2 + 35 大触我们做朋友吧!
cheng000 + 2 Mcbbs有你更精彩~
kehebai + 3 Mcbbs有你更精彩~
ASYTasyt + 1 + 4 Mcbbs有你更精彩~
chyx + 2 很棒的作品!
sylqiuyifeng + 4 + 50 + 1 迟来的加分
PETER·篠 + 3 + 25 Mcbbs有你更精彩~
End-Enderman + 2 + 35 忘记加分了= = 但是为何不讲解指令..
pacerrecap + 4 + 50 + 1 Ssssssssssssssssssss
火星浮云 + 1 楼主你太帅了~
719823597 + 4 + 50 + 1 Ssssssssssssssssssss
ufof + 1 Mcbbs有你更精彩~
G_LGlet + 15 楼主你太帅了~

查看全部评分

回复

使用道具 举报

发表于 2015-5-1 21:45:03 | 显示全部楼层
发了? 干嘛不标【TRP|CBL】
回复

使用道具 举报

发表于 2015-5-1 21:54:55 | 显示全部楼层
应该对旗帜溢出处理一下。。。
这样在就不会在只有十个雷的时候出现十一个旗子导致显示器出错。。。
回复

使用道具 举报

 楼主| 发表于 2015-5-1 21:56:01 | 显示全部楼层
siiftun1857 发表于 2015-5-1 21:54
应该对旗帜溢出处理一下。。。
这样在就不会在只有十个雷的时候出现十一个旗子导致显示器出错。。。 ...

{:10_492:}是我说明不全,如果旗帜溢出的话旗帜统计会显示“E”
回复

使用道具 举报

发表于 2015-5-1 21:58:27 | 显示全部楼层
乙烯_中国 发表于 2015-5-1 21:56
是我说明不全,如果旗帜溢出的话旗帜统计会显示“E”

但是原版的扫雷会出现"-1"或"-9"诸如此类的提示。。。
回复

使用道具 举报

 楼主| 发表于 2015-5-1 22:02:12 | 显示全部楼层
siiftun1857 发表于 2015-5-1 21:58
但是原版的扫雷会出现"-1"或"-9"诸如此类的提示。。。

{:10_493:}那个就没办法啦...虽然再加一条计数器也可以做,但是我觉得跳E应该足够了(ps:其实我忘记导入负号的素材了)

评分

参与人数 1人气 +1 收起 理由
siiftun1857 + 1 2333

查看全部评分

回复

使用道具 举报

发表于 2015-5-1 22:34:57 | 显示全部楼层
看到TRP还以为是红石制作的...
回复

使用道具 举报

发表于 2015-5-1 23:19:10 来自手机 | 显示全部楼层
大赞如此详细的原理
回复

使用道具 举报

发表于 2015-5-2 01:54:36 | 显示全部楼层
本帖最后由 jianghr 于 2015-5-2 02:01 编辑

终于改完了,以后你发帖记得不要从WORD直接拷东西到编辑框,代码简直没法看,你的头稿里还在CB框里出现微软雅黑,简直逗。尤其是编辑置顶,严禁使用Word。
修改完的原稿已发本子群。你也可以自己在编辑模式提取。
排版和语言我重新给你修正了下,目的是给想学的人看懂,实际发教程时不要直接说CB,我都给你替换掉了。
然后,说下本帖说明的几个问题:
如果我没看错的话,mine记分板是做数字判定中比较重要的一部数据格式,然而通篇你没说,你只说了high记分板。全文介绍看似对结构和运行说的很明白,但是对参与判定和显示的核心——记分板数据一笔带过。
你这种模式的优点就是生成时就做了判定,游戏中的运行效率说得过去,GUI也不错。但在这篇解说中没有把这些优点突出出来。最具逼格的地图损害值显示系统,你没做任何解释……生成部分我单独给你拎了一下,其它部分我想拎但是怕拎错了误人子弟。
总而言之,从结果上看,这个制作很具有可玩性,解说也是用心撰写,我们这几个月来也是看着你一点一点做出来的,综上,予以加精。不过这篇解说最根本的目的不是写给群里人看的,而是让想学想仿的人能够按照你的解说看懂而仿制出来,希望能在今后注意这一点,多向贰逼学习他那种写教程的方法。

评分

参与人数 1金粒 +1 收起 理由
ufof + 1 你是我见过最喜欢码字的人

查看全部评分

回复

使用道具 举报

发表于 2015-5-2 08:35:38 | 显示全部楼层
所以说最复杂的部分是岛素材° A°
回复

使用道具 举报

发表于 2015-5-2 12:03:42 | 显示全部楼层
居然全部看完了。。
不过为什么不加一个自定义雷数&自定义棋盘大小
回复

使用道具 举报

发表于 2015-5-2 12:25:50 | 显示全部楼层
法克,神奇啊!
回复

使用道具 举报

 楼主| 发表于 2015-5-2 12:31:17 | 显示全部楼层
G_LGlet 发表于 2015-5-2 12:03
居然全部看完了。。
不过为什么不加一个自定义雷数&自定义棋盘大小

因为我发布的版本实际上是将中键系统移除的版本,中键和自定义系统不能共存。
回复

使用道具 举报

发表于 2015-5-2 12:47:06 | 显示全部楼层
本帖最后由 ufof 于 2015-5-10 14:10 编辑
翻开的第一个格子永远不会是雷。

为什么我有的时候玩扫雷刚开始就输

评分

参与人数 1金粒 +1 收起 理由
langyo + 1 因为人品

查看全部评分

回复

使用道具 举报

发表于 2015-5-2 13:54:34 | 显示全部楼层
江米条 发表于 2015-5-1 22:34
看到TRP还以为是红石制作的...

红石也是TRP的?
话说你好像没看到标题的TRP后面又一个乙烯
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 手机版本

GMT+8, 2017-11-23 19:27 , Processed in 0.163405 second(s), 9 queries , Memcache On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标。本站与Mojang以及微软公司没有从属关系。

© 2010-2017 我的世界中文论坛 版权所有。本站原创图文内容版权属于原创作者,未经许可不得转载。

快速回复 返回顶部 返回列表