繰り返し処理と時間を使ってブロックを動かす(マイクラ×Python)

最初の位置。

f:id:toimo2011:20181102193824p:plain

from mcpi.minecraft import Minecraft
from mcpi.block import *
import time

# 繰り返し処理と時間を使ってブロックを動かす
def moveCar(mc,pos):
    i = 0
    # 10回(秒)繰り返す処理
    while i < 10:
        # レンガブロックを設置する
        mc.setBlock(pos.x+i,pos.y,pos.z,BRICK_BLOCK)
        mc.setBlock(pos.x+i+2,pos.y,pos.z,BRICK_BLOCK)
        mc.setBlock(pos.x+i,pos.y,pos.z-2,BRICK_BLOCK)
        mc.setBlock(pos.x+i+2,pos.y,pos.z-2,BRICK_BLOCK)
        # 1秒待つ
        # import time をすることで下記が使用できる
        time.sleep(1)
        # 動いたように見せるため、空気ブロックを配置する
        mc.setBlock(pos.x+i,pos.y,pos.z,AIR)
        mc.setBlock(pos.x+i+2,pos.y,pos.z,AIR)
        mc.setBlock(pos.x+i,pos.y,pos.z-2,AIR)
        mc.setBlock(pos.x+i+2,pos.y,pos.z-2,AIR)
        # while文の条件 1ずつ増やす
        i = i + 1

動いた。

f:id:toimo2011:20181102194101p:plain

車っぽくして自分が乗っているように少し変更。

# 繰り返し処理と時間を使ってブロックを動かす
def moveCar(mc,pos):
    i = 0
    # 10回(秒)繰り返す処理
    while i < 10:
        # レンガブロックを設置する(タイヤのつもり)
        mc.setBlock(pos.x+i,pos.y,pos.z,BRICK_BLOCK)
        mc.setBlock(pos.x+i+2,pos.y,pos.z,BRICK_BLOCK)
        mc.setBlock(pos.x+i,pos.y,pos.z-2,BRICK_BLOCK)
        mc.setBlock(pos.x+i+2,pos.y,pos.z-2,BRICK_BLOCK)
        # 上付き石ハーフブロックを設置する id=8
        mc.setBlock(pos.x+i+1,pos.y,pos.z,STONE_SLAB.id,8)
        mc.setBlock(pos.x+i+1,pos.y,pos.z-1,STONE_SLAB.id,8)
        # イスっぽく見せるため石の階段ブロック(109)を設置する
        mc.setBlock(pos.x+i,pos.y+1,pos.z-1,109,1)

        # イス(石の階段ブロック)に座っているように見せるため、
        # ユーザーの位置をイスの一つ上に設置する
        mc.player.setTilePos(pos.x+i+1,pos.y+1,pos.z-1)

        # 1秒待つ
        # import time をすることで下記が使用できる
        time.sleep(1)

        # 動いたように見せるため、空気ブロックを配置する
        mc.setBlock(pos.x+i,pos.y,pos.z,AIR)
        mc.setBlock(pos.x+i+2,pos.y,pos.z,AIR)
        mc.setBlock(pos.x+i,pos.y,pos.z-2,AIR)
        mc.setBlock(pos.x+i+2,pos.y,pos.z-2,AIR)

        mc.setBlock(pos.x+i+1,pos.y,pos.z,AIR)
        mc.setBlock(pos.x+i+1,pos.y,pos.z-1,AIR)
        mc.setBlock(pos.x+i,pos.y+1,pos.z-1,AIR)

        # while文の条件 1ずつ増やす
        i = i + 1

1秒ごとに繰り返す処理なので、カクカク動く車。

f:id:toimo2011:20181103073803p:plain