Pythonを使って3階層のピラミッドを作るコードを、子供(中1)に書かせてみたら、次のようなコードができた。
from mcpi.minecraft import Minecraft from mcpi.block import * mc = Minecraft.create() pos = mc.player.getTilePos() for i in range(3): for j in range(3): for a in range(2): for b in range(2): for c in range(1): mc.setBlock(pos.x+i,pos.y,pos.z+j,STONE) mc.setBlock(pos.x-i,pos.y,pos.z-j,STONE) mc.setBlock(pos.x+i,pos.y,pos.z-j,STONE) mc.setBlock(pos.x-i,pos.y,pos.z+j,STONE) mc.setBlock(pos.x+a,pos.y+1,pos.z+b,STONE) mc.setBlock(pos.x-a,pos.y+1,pos.z-b,STONE) mc.setBlock(pos.x+a,pos.y+1,pos.z-b,STONE) mc.setBlock(pos.x-a,pos.y+1,pos.z+b,STONE) mc.setBlock(pos.x,pos.y+2,pos.z,STONE)
難解である。。。力作だが、随分と長いコードである。しかも3階層にしか対応できない。。。
解答例として、任意の階層のピラミッド作れるコードを短く書いてみた。以下は20階層のピラミッドの例である。
from mcpi.minecraft import Minecraft from mcpi.block import * mc = Minecraft.create() pos = mc.player.getTilePos() nLayer = 20 for l in range(1,nLayer+1): for i in range(l*2-1): for j in range(l*2-1): mc.setBlock(pos.x+i-l+1,pos.y+nLayer-l,pos.z+j-l+1,STONE)
しかし、これだと、見た目には必要のない、ピラミッドの中のブロックを置くことになり、処理に時間がかかる。ちなみに、100階層で試したところ、GTX980では途中で処理が止まってしまった。
必要のないブロックを削減した(つまり、空洞の)ピラミッドの作成は、明日の宿題とする。