Computer Craft つるはしなどをタートルに装備させる

  1. 装備させたいツールを右側のボックスに入れる。
  2. ボックスの一番左上にあるダイヤのシャベルを右に装備する。
    equip 1 right
    ※ 左上から右下に1~16番
  3. ダイヤのクワを左に装備する。
    equip 2 left
    ※ 装備を外す場合は unequip right、unequip left

f:id:toimo2011:20190120074836p:plain

つるはしなどをタートルに装備させる

装備した後の姿

f:id:toimo2011:20190120075201p:plain

装備した後の姿

ダイヤ以外は装備できなかった。

Computer Craft タートルに名前を付ける

  1. タートルを右クリック
  2. label set 名前

f:id:toimo2011:20190114073605p:plain

タートルに名前を付ける

タートルを動かすには燃料を右側のアイテム欄に入れる(例:石炭ブロック)。

refuel で燃料を設定する。

タートルの色を変えるには、染料を持ったままタートルを右クリック。金鉱石と一緒にラピスラズリも手に入れていたので、試しに右クリック。

f:id:toimo2011:20190114073848p:plain

タートルの色を変える

タートルが青色に変わった&ラピスラズリも消費された。

ComputerCraft タートルを作成する

  1. イクラにComputerCraftを導入する。
    ComputerCraft | Programmable Computers for Minecraft
  2. 金鉱石やレッドストーンを入手する。
  3. Advanced Computer (AC) を作成する。
    金インゴット7個、レッドストーン1個、板ガラス1個
  4. Advanced Turtleを作成する。
    金インゴット7個、上記3でできたAC1個、チェスト1個

f:id:toimo2011:20190113091719p:plain

タートル

できた。

ブロック名を当てるゲーム2(マイクラ×Python)

前のプログラムの改良版

ブロック名を当てるゲーム(マイクラ×Python) - toimo2011’s diary

ブロックを辞書として登録して、その中からランダムに取り出したものを答える。

# ブロック名を当てるゲーム
# coding:utf-8
from mcpi.minecraft import Minecraft
from mcpi.block import *
import random

mc = Minecraft.create()
mc.events.clearAll()

# 辞書を作成
# 必要に応じて追加していく
blocks = {"GRASS": GRASS,
          "STONE": STONE}

# 辞書からランダムにブロックを取り出す
blockName, blockId = random.choice(list(blocks.items()))
# 適当な位置に名前を当ててほしいブロックを配置する
pos = mc.player.getTilePos()
mc.setBlock(pos.x+5, pos.y, pos.z, blockId)
mc.postToChat("GAME1: What's this block's TYPE? ==> ")

# 正解するまでループ
while True:
    # マインクラフト内でテキストを入力する
    for i in mc.events.pollChatPosts():
        # ブロック名が合っているかチェックする
        if i.message == blockName:
            mc.postToChat("Correct!")
            exit()
        else:
            mc.postToChat("Wrong!")
            mc.postToChat("GAME1: What's this block's TYPE? ==> ")
 

ブロック名を当てるゲーム(マイクラ×Python)

f:id:toimo2011:20181208083348p:plain

# ブロック名を当てるゲーム
from mcpi.minecraft import Minecraft
from mcpi.block import *

mc = Minecraft.create()
mc.events.clearAll()

# 辞書を作成(今回は草ブロックのみ)
a = {"GRASS":GRASS}

mc.postToChat("GAME1: What's this block's TYPE? ==> ")
pos = mc.player.getTilePos()
# 適当な位置に名前を当ててほしいブロックを配置する
mc.setBlock(pos.x+5,pos.y,pos.z,a["GRASS"])  

# 正解するまでループ
while True:
    # マインクラフト内でテキストを入力する
    for i in mc.events.pollChatPosts():
        for key in a.keys():
            # ブロック名が合っているかチェックする
            if i.message == key:
                mc.postToChat("Correct!")
                exit()
            else:
                mc.postToChat("Wrong!")
                mc.postToChat("GAME1: What's this block's TYPE? ==> ")

f:id:toimo2011:20181208083406p:plain

 

定義された中からランダムに値を取り出す Python

# coding:utf-8
import random
# タプル 要素を変更したくない場合に用いる
# リスト [1,2,...] は後から要素を変更できる
# マイクラのブロックIDを定義して何かに使える?
blockId = (1,2,3,8,9,10)
# blockId からランダムに値を取り出す
a = random.choice(blockId)
print(a)

繰り返し処理と時間を使って風車を作る(マイクラ×Python)

f:id:toimo2011:20181104074712p:plain

from mcpi.minecraft import Minecraft
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 中を空気ブロックにする
        mc.setBlocks(pos.x-2,pos.y,pos.z-2,pos.x+2,pos.y+9,pos.z-6,AIR)
        # 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)
                mc.setBlocks(pos.x-10,pos.y+1,pos.z,pos.x+10,pos.y+21,pos.z,AIR)
                # 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)
                mc.setBlocks(pos.x-10,pos.y+1,pos.z,pos.x+10,pos.y+21,pos.z,AIR)

f:id:toimo2011:20181104074745p:plain