我的世界建造单元第?节金字塔和51*51大空心方块

MC-create第?节金字塔和51*51大空心方块

有了前面的setBlocks基础,那么做这些东西就好做了。我们只需要确定坐标就行了 我们先把金字塔做出来
import mcpi.minecraft as mmc
mc = mmc.Minecraft.create()
pos = x,y,z = mc.player.getTilePos()
for i in range(6):
	mc.setBlocks(x-i,y+12-i,z-i,x+i,y+12-i,z+i,41)
这样能做出来一个金字塔,我们回顾一下这个金字塔是怎么实现的。 先看一下这个图:

图中有几个方块,都有对应的字母,假如我们是以俯视的视角来看,我们自己站在了E的上面,咱们都知道我们自己的坐标是x,y,z那我们脚底下的E点坐标是多少呢? 我们在E上面,也就是哪个坐标有变化?y!只有y坐标是控制上下的。那我们是x,y,z我们脚下E点就是x,y-1,z。 以此我们可以一点点算出其余方块的坐标,例如D方块和E方块在同一平面,也就是说y坐标也是y-1。但是其他坐标有变化,假如x是前后z是左右,那D方块的左右也就是z坐标发生了变化,向左移动了,我们可以认为向左移动算“负” 就是z-1。那x坐标也就是前后有变化吗?没有!所以D方块的坐标就是x,y-1,z-1

我们拿这个金字塔来举例子,我们建造最上面塔尖的时候,只需要一个方块,那我现在提个要求。必须用setBlocks()语句建造这一个方块。 setBlocks语句是两组坐标,起始建造位置坐标和结束建造位置坐标。我们把结束和起始坐标都填一个他就只建造一个方块了 那现在我想在我脚下建造塔尖,程序应该这样写:
import mcpi.minecraft as mmc
mc = mmc.Minecraft.create()
pos = x,y,z = mc.player.getTilePos()
mc.setBlocks(x,y-1,z,x,y-1,z,41) #我在脚下一格的位置建造了一个金块
那塔尖下面那一层呢?我们需要写A点和B点坐标:
import mcpi.minecraft as mmc
mc = mmc.Minecraft.create()
pos = x,y,z = mc.player.getTilePos()
mc.setBlocks(x,y-1,z,x,y-1,z,41) #我在脚下一格的位置建造了一个金块
mc.setBlocks(x+1,y-2,z-1,x-1,y-2,z+1,41) #我在塔尖的下面建造了一层,因为还在塔尖的下面所以要在y-1的基础上再-1
最下面的一层:
import mcpi.minecraft as mmc
mc = mmc.Minecraft.create()
pos = x,y,z = mc.player.getTilePos()
mc.setBlocks(x,y-1,z,x,y-1,z,41) #我在脚下一格的位置建造了一个金块
mc.setBlocks(x+1,y-2,z-1,x-1,y-2,z+1,41) #我在塔尖的下面建造了一层,因为还在塔尖的下面所以要在y-1的基础上再-1
mc.setBlocks(x+2,y-3,z-2,x-2,y-3,z+2,41) #第三层金字塔
有的同学可能发现了,x,y,z每次变化的规律:都比上一次大了1,第一层不变,第二层在原来的基础上+1,第三层又在第二层基础上+1.
这只是建造了三层的金字塔,那如果我想要建造个100层甚至1000层的金字塔呢?难道我们要写1000行setBlocks吗? 明显不是!我们利用了for循环来精简咱们的程序
import mcpi.minecraft as mmc
mc = mmc.Minecraft.create()
pos = x,y,z = mc.player.getTilePos()
for i in range(6): # 这块的range(6)是控制循环执行次数,也是控制金字塔层数
	mc.setBlocks(x-i,y-1-i,z-i,x+i,y-1-i,z+i,41)
这个金字塔应该是从脚下生成的,从塔尖生成到塔底,这个视频是金字塔生成的顺序 通过这个视频我们能了解到,是for循环一遍一遍让金字塔出现的,我们range写了6,所以金字塔层数是6;for循环能够将range函数生成的等差数列一个一个的取出来 而且是按顺序取出来,range函数默认是从0开始生成,我们的setBlocks语句中x-i就相当于x-0,其余也是如此.建造完第一遍开始第二遍的时候i就变成1了,那 setBlocks语句就变成了x+1,y-1-1,z-1,x-1,y-1-1,z+1 。是不是和我们上面没用for循环做的塔尖下面那一层的程序一样了。 到这里,金字塔怎么建造咱们应该掌握的差不多了,下面我们看看房子的墙和地面怎么做吧
墙面我们之前是用大方块中间掏空来实现的,但这次我们还得考虑大方块放哪,墙肯定在房顶下面,那墙的坐标就有了限制(录音设备有限,先凑合看) 到这我们造出了一个实心的大方块,下一步咱们该掏空他了
import mcpi.minecraft as mmc
mc = mmc.Minecraft.create()
pos = x,y,z = mc.player.getTilePos()
for i in range(6): # 这块的range(6)是控制循环执行次数,也是控制金字塔层数
	mc.setBlocks(x-i,y-1-i,z-i,x+i,y-1-i,z+i,41)
mc.setBlocks(x-4,y-6,z-4,x+4,y-12,z+4,1) #建造实心墙体
mc.setBlocks(x-3,y-6,z-3,x+3,y-11,z+3,0) #注意:我们要掏空不是掏没,所以要小一圈,而且需要留个底。怎么掏空,用空气所以最后的id是0
做完这步咱们就获得一个有房顶的空心的“房子”了
  • Avatar photo

    宁妄

    一个热爱自然却被困在代码世界的“人”

    Related Posts

    综合复习

    1️⃣ 认识Python Python就像和电脑说话的“魔法…

    牛马耕地

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注