猫史档案馆


用源码编辑器作出纸上Minecraft,我的看法

用户:晨月霜星晨月霜星查看:6 回复:10 评论:6 创建时间:2021-01-16T16:44:46


如今,各路大佬都在努力做出尽可能模式功能齐全的MINECRAFT当然是二维的) 

下面我来谈谈我的看法:

首先,是我的世界地图庞大的数据量

这就需要二维列表来储存

问题来了:怎样用源码编辑器做出二维列表呢

由于这类搭积木编程软件省去了遍历,所以构成一个二维列表相当困难,这就需要一个一维变二维的算法

列表只有一行,但我们可以把他分块排列。

center_image

这个二维点阵图很多人应该都知道,是阿雷西博信息。该信息共有1,679个二进制数字,而且1,679这个数字只能由两个质数相乘,因此只能把信息拆成73条横行及23条直行,这是假设该信息的读者会先将它排成一个长方形。如果把它排成23条横行,它会变成白色杂讯,相反如果把它排成73条横行,便可喵图中的一幅信息。

#扯远了

回归正题。这和我的世界题图数据储存有嘛关系?

当然有关系

因为阿雷西博信息虽然只有黑白两色(0和1),但如果使颜色增多,就会变成

center_image

那如果每种颜色代表不同的数字,则变成了一个拥有多种项目类型的列表!

//但这样做有个致命的缺陷,地图做不得无限大

举个实例

假设一个二维MC地图的Y坐标为1到9,X坐标为1到12,那么这个列表就有9×12=108项。#3×4屏幕,这个数值只是舞台区可见区域

0为空气方块,1喵方块,2土方块,3深色土方块,4云杉叶子,5云杉原木,6喵,7黄花  (牛不是有意上镜的)

center_image

那这个列表为0 0 0 0 0 0 0 0 0 4 4 4   0 0 0 0 0 0 0 0 0 4 4 4   0 0 0 0 0 0 0 0 0 5 0   0 0 6 6 0 0 0 0 0 0 5 0   0 0 1 1 6 0 0 0 0 0 5 0   1 1 2 2 1 1 1 6 7 0 1 0   2 2 3 3 2 2 2 1 1 6 5 0   3 3 3 3 3 3 3 2 2 1 1 7  3 3 3 3 3 3 3 3 3 2 2 1

好庞大的列表!

这都大,做出整个地图得多大!

“  可是,你,不要忘了。宇宙诞生之前,他是一个无结构的存在

    奇点

    没错。只要参数正确,便会爆炸,形成宇宙”    #出自刘慈欣科幻小说《镜像》

在MC中,奇点是什么?

种子

是的,种子。

需要一种算法来启动。

 

问题看似解决了,但实际还是复杂的。

 

剩下的,合成还是个问题。

用上面说的列表 

center_image

如果列表的第一项是木版且第二项是木板且第三项是木板且第5项是木棍且第八项是木棍且第4679项是空的

那么合成木搞

这么麻烦

这是最笨的方法,但是100%可行

 

 

切记不要以为有了原理就可以做出MC,真正的路还很长!

 

(以上只是个人浅见,大佬轻喷,转载必究)


回复

上一页1 页 / 共 1下一页
晨月霜星晨月霜星

自古沙发归楼主

点赞0


评论


我爱Siralim我爱Siralim

很不错哦~

点赞0


评论


晨月霜星晨月霜星

没人吗

点赞0


评论


不阔不阔

点赞0


评论


晨月霜星晨月霜星

别沉下去啊

点赞0


评论


晨月霜星晨月霜星

看来都是习惯只看不回复的。。。的确,我看到这么一个贴子的时候也不知道该咋回

点赞0


评论


SKQASKQA

说一下二维列表行列索引的获取方法

索引=(行-1)*列数+列

行=向上取整(索引/列数)

列=(索引-1)除以(列数+1)的余数

====分割线====

再说一下克隆体根据二维列表生成地图的方法

几行几列克隆好,然后私有(注意是私有,因为每个克隆体有每个克隆体自己的行列)行列号保存起来(计算方法就在上面)

然后克隆体启动切换什么造型或者设置什么特效直接根据行列号计算

点赞1


评论


晨月霜星晨月霜星

我再顶最后一次

点赞0


评论


哎呀果仁君哎呀果仁君

顶一哈

点赞0


评论


SXD_今夕何夕SXD_今夕何夕

dd

 

点赞0


评论