最近,一个小伙伴私信小编(在另一个平台),说:“你能不能用三维数组写一下?”
之前小编学过三维数组,可全忘了。在这位小朋友的提醒下才想起来。于是,小编将在今日来带着大家写一下用三维数组写的我的世界。
我们首先先回顾一下之前写的代码:
#includeusing namespace std; struct worldx{ struct worldy{ int z_block1[510]; int z_block2[510]; double z_high[510]; short z_light[510]; }y[400]; }zhux[510],xiax[510],mox[510]; struct Food { unsigned short bake_fool=0; unsigned short bake_hart=0; string En,Cn; bool can_cook=0; int th1,th2,th3,th4,th5,th6,th7,th8,th9; }M_food[1000]; struct Blocks{ int thing1,thing2,thing3,thing4,thing5,thing6,thing7,thing8,thing9;//合成表 unsigned light=0;//光 string En,Cn;//名字 unsigned int fall=1;//掉落(模组) bool xushi=1,gwxushi=1;//虚实 bool fall=0;//是否掉落 double high=1;//高度 unsigned get_tool=0;//工具 unsigned fumo_tool=0;//附魔(不需要==0) double get_time=0;//获取时间 short bake_jump;//类粘液块方块 unsigned fangxiang=0;//放置方向 }zhu_B[100000],done[10000],last[5000];//主世界、下界、末地
这里,我们只需提取出改造对象:would世界的部分
struct worldx{
struct worldy{
int z_block1[510];
int z_block2[510];
double z_high[510];
short z_light[510];
}y[400];
}zhux[510],xiax[510],mox[510];
我们要改造成三维数组。
众所周知,c++数组最大可以开1后面8个0,也就是100000000;而小编算出来最接近这个数的数是8388608,他是1024*1024*8组成的。有没有可能更大能?1024*1024*16=16777216,已经超出了100000000。如果是9的话他是可以不超出的,但考虑到后面的数值分配,我们还是用2的n次方。
三维分配:
在找好我们的数之后,我们就需要给这三个数进行分配。
1024是2的10次方,也就是;8是2的3次方,也就是。
我们目前开的是可以:
a[1024][8][1024];
目前这个y轴是小于我们指定的最少值:65+319=384,且X轴和Z轴都大于我们的最大值。 于是,我们就可以将X轴和Z轴调小一点,调到512;
a[512][][512]
y轴是多少呢?最大可以是32。可我们需要的是384呢。所以我们用三维数组是办不成事的。



