Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

!header_login!

只需一步,立刻登录

查看: 765|回复: 14

[命令方块] [TML-乾坤]分数智能排序算法

[复制链接]
发表于 2016-4-28 22:14:35 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 乾.坤 于 2016-4-28 22:14 编辑

大家好,我是乾坤。今天带来的是一个偏向算法性的作品——分数智能排序算法。也就是解决一堆分数从高到低排序的问题(这里要说一下,计分板上的排序是给玩家能直观看到的,而能被系统读取的顺序则需要输出到另一个计分板,看图

                               
登录/注册后可看大图


比如现在有9个玩家玩游戏,分数分别如上所示,虽然系统已经帮我们排好了先后顺序,但这个顺序计分板并不能读取,那就需要排序到另一个计分板:

                               
登录/注册后可看大图


就像这样,分数从高到低从第一名排到第九名(可见,也是可以处理重分的),这样的话我需要对比赛分数并列第4名的玩家执行命令只需要
/execute @e[score_Order_min=4,score_Order=4] ...
即可)
其实排序算法也是很常用的,小游戏制作选出最高分的问题也一直会被问到,而把排序拓展到n位之后,应用的范围就更广泛了。
下页使用方法

评分

参与人数 7人气 +11 金粒 +163 收起 理由
pca006132 + 2 + 35 很棒的作品!
林扬骐 + 1 + 20 思路还是易懂,后面的一堆“什么玩意”233.
dwch + 1 + 10 你不如继续去造EndRoad
hhttll + 2 Mcbbs有你更精彩~
chyx + 2 + 33 233
lzs1234 + 2 + 50 Mcbbs有你更精彩~
gunman + 1 + 15 我真的不是什么GT 2333

查看全部评分

回复

使用道具 举报

发表于 2016-4-28 22:38:21 | 显示全部楼层
看不明白O-O
回复

使用道具 举报

发表于 2016-4-28 23:37:13 | 显示全部楼层
看到核心原理,我又看了一遍,还看了一遍,明白了
好东西,之前pca也说过当时没仔细想,还是觉得要探测分数,很麻烦XD
这个方法才算看懂。总而言之就是好像一堆球,我在其中选取,取出最大的一个,然后把这个拿出来,重复这个过程直到都排完。而且全自动。
不错
回复

使用道具 举报

发表于 2016-4-29 05:30:00 | 显示全部楼层
命令方块真的不适合用来搞这种东西。mc 应该像 space engineers 一样,可以直接嵌入代码。这样大家都方便,效率也高

点评

为何命令方块不适合呢?麻烦吗?然而CB就是一种游戏模式,开心就好了  详情 回复 发表于 2016-4-29 17:32
MC本来就是java语言的,要是可以直接调用class文件,比如排序类就省事了  详情 回复 发表于 2016-4-29 09:21
回复

使用道具 举报

发表于 2016-4-29 09:21:57 | 显示全部楼层
hhttll 发表于 2016-4-29 05:30
命令方块真的不适合用来搞这种东西。mc 应该像 space engineers 一样,可以直接嵌入代码。这样大家都方便, ...

MC本来就是java语言的,要是可以直接调用class文件,比如排序类就省事了

点评

你说的这个是 mod 我觉得 mod 有几个很重要的缺陷: 1. 他是跟客户端走的而不是跟地图走的。你不会为了一个一般般的地图去装一个 mod,太麻烦了。 2. 不安全。mod 其实可以写病毒的,目前没有一个杀毒软件能杀 jar  详情 回复 发表于 2016-4-29 10:01
回复

使用道具 举报

发表于 2016-4-29 10:01:29 | 显示全部楼层
gunman 发表于 2016-4-29 09:21
MC本来就是java语言的,要是可以直接调用class文件,比如排序类就省事了

你说的这个是 mod

我觉得 mod 有几个很重要的缺陷:
1. 他是跟客户端走的而不是跟地图走的。你不会为了一个一般般的地图去装一个 mod,太麻烦了。
2. 不安全。mod 其实可以写病毒的,目前没有一个杀毒软件能杀 jar 的病毒(来源:andylizi)
3. 太过繁琐。写一个 mod 真是麻烦的要死。新人完全不知从何做起。java 刚开始特别困难。

出于以上几点,我觉得最好的解决方案是:
使用内嵌 js 或 lua 的方法(比如直接把 js 脚本或者 lua 脚本写到命令方块里)。脚本跟地图走且脚本的每一行代码都在 mc 的虚拟环境里执行,保证不会有病毒。mod 依然可以存在,mod 主要用于添加物品或者大幅度修改游戏机制,所以可以说 mod 和 内嵌脚本完全没有重合之处。你看着好了,用不了多久,肯定会有人做出一个让 mc 支持内嵌 js 的 mod 的。

评分

参与人数 1人气 +1 收起 理由
840196733mw + 1 我赌1人气 那人是mojang mojang的阴谋.

查看全部评分

回复

使用道具 举报

发表于 2016-4-29 17:13:28 | 显示全部楼层
本帖最后由 林扬骐 于 2016-4-29 17:31 编辑

思路应该还是易懂的,但是后面一堆看吐了啊啊啊,用作排名的话肯定是要用json的吧233

另外解压文件坏了快修
回复

使用道具 举报

发表于 2016-4-29 17:32:36 | 显示全部楼层
hhttll 发表于 2016-4-29 05:30
命令方块真的不适合用来搞这种东西。mc 应该像 space engineers 一样,可以直接嵌入代码。这样大家都方便, ...

为何命令方块不适合呢?麻烦吗?然而CB就是一种游戏模式,开心就好了

点评

不适合啊.. 弄个排序这么复杂。  详情 回复 发表于 2016-4-30 10:39
回复

使用道具 举报

发表于 2016-4-29 19:51:19 | 显示全部楼层
你的想法与选择排序已经很接近了:遍历数组选出最小/最大放在数组头,然后继续选择最小/最大放在下一位
但是这个算法的时间复杂度为O(n^2),属于平方级算法,当n值大时排序速度慢

你可以在搜索第一名的同时搜索最后一名,这样可以稍微加快排序速度

而且既然你额外使用了计分版,那你就可以在这个计分版里只存1个分数数据,用它来交换分数就行了,像你这样排序结果单独存又转存到原计分版是明显浪费时间的,而且实际上也浪费了空间


然而由于CB还不能用递归,所以也没有更好的算法可用了(比如快排,时间复杂度为O(n*log以2为底n)

点评

嗯,后续我会再改进的,谢谢建议XD  详情 回复 发表于 2016-5-2 10:07
emm其实显示计分板只是为了演示用,其实本来的系统是没有转存的hh,不过我倒是能优化一下cb,有了一个比较好的方法XD  详情 回复 发表于 2016-5-2 10:07
回复

使用道具 举报

发表于 2016-4-29 20:36:41 | 显示全部楼层
计分板不到家啊 现在才知道有大于小于这些用法

又有新的技能解锁了

新技能 排序 Get √
回复

使用道具 举报

发表于 2016-4-30 10:39:57 | 显示全部楼层
pca006132 发表于 2016-4-29 17:32
为何命令方块不适合呢?麻烦吗?然而CB就是一种游戏模式,开心就好了

不适合啊.. 弄个排序这么复杂。
回复

使用道具 举报

 楼主| 发表于 2016-5-2 10:07:27 | 显示全部楼层
kj415j45 发表于 2016-4-29 19:51
你的想法与选择排序已经很接近了:遍历数组选出最小/最大放在数组头,然后继续选择最小/最大放在下一位{:69 ...

嗯,后续我会再改进的,谢谢建议XD
回复

使用道具 举报

 楼主| 发表于 2016-5-2 10:07:03 | 显示全部楼层
kj415j45 发表于 2016-4-29 19:51
你的想法与选择排序已经很接近了:遍历数组选出最小/最大放在数组头,然后继续选择最小/最大放在下一位{:69 ...

emm其实显示计分板只是为了演示用,其实本来的系统是没有转存的hh,不过我倒是能优化一下cb,有了一个比较好的方法XD
回复

使用道具 举报

发表于 2016-5-4 13:35:49 | 显示全部楼层
似懂非懂
回复

使用道具 举报

发表于 2016-5-6 13:27:14 | 显示全部楼层
这些编码躲什么鬼看不懂{:10_492:}
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2017-7-28 16:46 , Processed in 0.192324 second(s), 7 queries , Memcache On.

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

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

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