繰り返し処理と時間を使って風車を作る(マイクラ×Python)
from mcpi.block import *
import time
# 風車を作る
def windmill(mc,pos):
# 0 風車のサイズは横7マス縦13マス
# 1 下半分石レンガブロックを設置する(地面を合わせて6マス)
mc.setBlocks(pos.x-3,pos.y-1,pos.z-1,pos.x+3,pos.y+4,pos.z-7,STONE_BRICK)
# 2 上半分コンクリートブロックを設置する(251)(6マス)
mc.setBlocks(pos.x-3,pos.y+5,pos.z-1,pos.x+3,pos.y+10,pos.z-7,251)
# 3 中を空気ブロックにする
# 4 風車の後ろ側に扉を設置する
mc.setBlock(pos.x,pos.y,pos.z-7,DOOR_WOOD.id,1)
mc.setBlock(pos.x,pos.y+1,pos.z-7,DOOR_WOOD.id,8)
# 5 屋根を設置する(階段レンガブロック、108)
# 5-1 一段目
mc.setBlocks(pos.x-3,pos.y+11,pos.z-1,pos.x+3,pos.y+11,pos.z-1,108,3)
mc.setBlocks(pos.x-3,pos.y+11,pos.z-2,pos.x-3,pos.y+11,pos.z-6,108)
mc.setBlocks(pos.x+3,pos.y+11,pos.z-2,pos.x+3,pos.y+11,pos.z-6,108,1)
mc.setBlocks(pos.x-3,pos.y+11,pos.z-7,pos.x+3,pos.y+11,pos.z-7,108,2)
# 5-2 二段目
mc.setBlocks(pos.x-2,pos.y+12,pos.z-2,pos.x+2,pos.y+12,pos.z-2,108,3)
mc.setBlocks(pos.x-2,pos.y+12,pos.z-3,pos.x-2,pos.y+12,pos.z-5,108)
mc.setBlocks(pos.x+2,pos.y+12,pos.z-3,pos.x+2,pos.y+12,pos.z-5,108,1)
mc.setBlocks(pos.x-2,pos.y+12,pos.z-6,pos.x+2,pos.y+12,pos.z-6,108,2)
# 5-3 三段目
mc.setBlocks(pos.x-1,pos.y+13,pos.z-3,pos.x+1,pos.y+13,pos.z-3,108,3)
mc.setBlocks(pos.x-1,pos.y+13,pos.z-4,pos.x-1,pos.y+13,pos.z-4,108)
mc.setBlocks(pos.x+1,pos.y+13,pos.z-4,pos.x+1,pos.y+13,pos.z-4,108,1)
mc.setBlocks(pos.x-1,pos.y+13,pos.z-5,pos.x+1,pos.y+13,pos.z-5,108,2)
# 6 羽を設置する(繰り返し処理で羽が回転しているように見せる)
while True:
# 6-1 縦横
# 6-1-1 木
mc.setBlocks(pos.x,pos.y+1,pos.z,pos.x,pos.y+21,pos.z,WOOD_PLANKS)
mc.setBlocks(pos.x-10,pos.y+10,pos.z,pos.x+10,pos.y+10,pos.z,WOOD_PLANKS)
# 6-1-2 羊毛
mc.setBlocks(pos.x+1,pos.y+1,pos.z,pos.x+2,pos.y+9,pos.z,WOOL_WHITE)
mc.setBlocks(pos.x-1,pos.y+12,pos.z,pos.x-2,pos.y+21,pos.z,WOOL_WHITE)
mc.setBlocks(pos.x+2,pos.y+11,pos.z,pos.x+10,pos.y+12,pos.z,WOOL_WHITE)
mc.setBlocks(pos.x-2,pos.y+8,pos.z,pos.x-10,pos.y+9,pos.z,WOOL_WHITE)
time.sleep(1)
# 6-2 斜め
# 6-2-1 木
for i in range(7):
mc.setBlock(pos.x+i,pos.y+10+i,pos.z,WOOD_PLANKS)
mc.setBlock(pos.x-i,pos.y+10-i,pos.z,WOOD_PLANKS)
mc.setBlock(pos.x+i,pos.y+10-i,pos.z,WOOD_PLANKS)
mc.setBlock(pos.x-i,pos.y+10+i,pos.z,WOOD_PLANKS)
# 6-2-2 羊毛
for i in range(6):
mc.setBlock(pos.x+i+1,pos.y+12+i,pos.z,WOOL_WHITE)
mc.setBlock(pos.x+i+1,pos.y+13+i,pos.z,WOOL_WHITE)
mc.setBlock(pos.x-i-1,pos.y+7-i,pos.z,WOOL_WHITE)
mc.setBlock(pos.x-i-1,pos.y+8-i,pos.z,WOOL_WHITE)
mc.setBlock(pos.x+i+2,pos.y+9-i,pos.z,WOOL_WHITE)
mc.setBlock(pos.x+i+2,pos.y+10-i,pos.z,WOOL_WHITE)
mc.setBlock(pos.x-i-2,pos.y+10+i,pos.z,WOOL_WHITE)
mc.setBlock(pos.x-i-2,pos.y+11+i,pos.z,WOOL_WHITE)
time.sleep(1)