简单的minecraft模拟
scratch吧
全部回复
仅看楼主
level 8
随意路过之者
楼主
其实是用c++做的,我也不知道为什么要发在这个吧……
mc
镇楼
!
2018年09月22日 13点09分
1
level 8
随意路过之者
楼主
Minecraft万岁!某迷你万碎!
请大家不要喷,谢谢!
(PS:因为本文档是在Word里编辑的所以没有表情)
在更新期间请勿插楼,插者删!
2018年09月22日 13点09分
3
随意路过之者
我顶
2018年09月30日 12点09分
随意路过之者
我又顶
2018年10月05日 12点10分
随意路过之者
我再顶
2018年10月06日 03点10分
level 8
随意路过之者
楼主
回复楼
2018年09月22日 13点09分
5
level 8
随意路过之者
楼主
(1)我们先来思考一下:在Minecraft中操作到底有多少种可能性?最普通的应该就是挖掘和放置这两种操作了。挖掘就是将方块设置为air,而放置需要给定的方块来源。那么我们就将这两种操作作为两个函数,再建立一个16*16*16的三维数组(其实就是一个区块,因为我们要考虑空间复杂度),思路永远是最重要的!
2018年09月22日 13点09分
6
level 8
随意路过之者
楼主
(2)由于scratch的链表太过于鸡肋,所以我用了c++这把牛刀(IDE是Dev-C++,不要说为什么不用VC)。先把基础框架写好:
添加数组(要将每一维开到17,0~16,我们因为方便只用其中的1~16),链表作全局使用:
这个chunk的区域是:x:1~16 y:1~16 z:1~16,还是便于使用。
2018年09月22日 13点09分
8
hnOsmium01
恕我直言,“我们只要用其中n个,但是为了安全+懒我们建一个n+5的数组吧”的都是垃圾
2018年09月23日 22点09分
hnOsmium01
虽然不用c++,但是编译器好像做不到给你优化从来没用过的数组把
2018年09月23日 22点09分
level 8
随意路过之者
楼主
(3)接下来我们要开始写mine()和put()这两个最主要的函数了。
Mine的思路:将给定坐标的位置方块设成空气,所以要有xyz三个参数,图片如下:
空气的ID值是0,所以我们把方块值设为0。
(PS:方块值表可以在官方wiki上找到,没有包括新版本1.13的内容,所以本教程也相同:
https://minecraft-zh.gamepedia.com/Java%E7%89%88%E6%95%B0%E6%8D%AE%E5%80%BC/%E6%96%B9%E5%9D%97ID
Put的思路:给定方块的ID值,在制定的位置放那个方块。代码和mine基本相同:
要注意的是,当方块不是空气时无法放方块,所以要加一个if语句。
来看看我们今天的成果:
(PS:应该以后会周六周末更,也不知道会不会弃坑)
2018年09月22日 13点09分
9
hnOsmium01
强烈建议用#define AIR 0之类的
重构火葬场欢迎您
2018年09月23日 22点09分
随意路过之者
回复 ginsotree :晚上的教程会改的,谢谢反馈!
2018年09月24日 01点09分
level 10
射手joshua2006
技术贴支持!
2018年09月22日 13点09分
10
随意路过之者
感谢支持
!
2018年09月23日 01点09分
level 8
随意路过之者
楼主
现在大家可以回复了
!
2018年09月22日 13点09分
11
随意路过之者
作业做完可以疯狂更新了,不过不要修仙,明天再发
!
2018年09月22日 13点09分
吧务
level 15
遧傂鼝
_ _ _ _ _,_ _ _ _ _
2018年09月22日 13点09分
12
level 10
射手joshua2006
#<include 大佬的教程 >
2018年09月22日 14点09分
13
水瓶座ZzXxYy
尖括号的位置错了
2018年10月02日 13点10分
射手joshua2006
@水瓶座ZzXxYy
蛤?哦!怪不得我觉得怪怪的。
2018年10月02日 14点10分
level 10
射手joshua2006
其实 word 也可以发表情,你只要打 () 然后里面有井字 (
#... ) 省略号是表情名字,比如 “滑稽” (#
滑稽)
2018年09月22日 14点09分
14
射手joshua2006
2018年09月22日 14点09分
遧傂鼝
但是
是升起,而且有些并不形象
2018年09月22日 14点09分
遧傂鼝
2018年09月22日 14点09分
射手joshua2006
@遧傂鼝
本来百度贴吧就不能和其它任何专业论坛平台比较。也不能抱太大的期望啦~
2018年09月22日 14点09分
level 11
three♬
while(true)
{
print("TQL")
}
2018年09月22日 23点09分
15
level 9
-流-
while(1){
printf("ORZ");
}
话说用黑框做出来的MC怎么显示。。
2018年09月23日 00点09分
16
随意路过之者
什么意思
2018年09月23日 01点09分
level 8
随意路过之者
楼主
(4)在mc中,如果要大量放置方块,需要用到/fill指令(生存当然是不会用的啦#(滑稽))。Fill需要2个位置的坐标和填充的方块类型,参数比较多,慢慢来:
这两个坐标分别表示左前下方向和右后上方向(别问我右后和方向分别是谁#(滑稽)),我们写一个三重循环,对每个方块遍历处理:
第二个坐标的三个值一定会比第一个坐标的值都大的,所以三个差相乘就是循环的次数。
(PS:fill指令不需要考虑是否源方块是否是空气,不像put一样)
2018年09月23日 01点09分
18
随意路过之者
要调成英文括号
2018年09月23日 01点09分
随意路过之者
#(滑稽)
2018年09月23日 01点09分
level 8
随意路过之者
楼主
上楼图错了,找不同
2018年09月23日 01点09分
19
随意路过之者
没人找到吗
2018年09月24日 01点09分
_亻尔女子
@随意路过之者
是不想找
2018年09月28日 11点09分
水瓶座ZzXxYy
@随意路过之者
z改成k
2018年10月02日 13点10分
1
2
3
尾页