【マイクラ】プログラミングで家を建てよう!MakeCodeで村の家をつくる方法

鉄のシャベルを持って右クリック(使う)すると、目の前に村によくある家が建つプログラムです。MakeCode for Minecraft のブロックを見ながら、どのブロックで家のどこができるのかを解説します。

できあがる家

大きさ かべは 5×5マス、高さ5マス。屋根のはり出しを入れると 7×7マス
つかう材料 丸石、オークの原木、オークの板材、板ガラス、たいまつ、オークのドア、オークの階段、ベッド、チェスト
建つ場所 プレイヤーの目の前(向いている方向に建つ)
動かし方 鉄のシャベルを持って右クリック

プログラムの流れ

このプログラムは、ブロック命令で大きな部分を一気につくり、エージェントに細かい部分をまかせる、という2段がまえになっています。

村の家プログラムのブロック全体
プログラム全体(クリックで拡大)
  1. 自分の位置と向きを記録する
  2. 丸石で中が空っぽの箱をつくる
  3. 四すみにオークの原木の柱を立てる
  4. 天井を板材にして、入口に穴をあける
  5. 窓(板ガラス)とたいまつを置く
  6. ドアと入口の階段を置く
  7. 屋根を3段つくる
  8. 屋根のてっぺんをふさぐ
  9. 家の中にベッドとチェストを置く
  10. エージェントを元の場所にもどす

座標の考え方(右・上・前)

このプログラムでは、ブロックを置く場所をすべて、次の「右・上・前」の座標ブロックで指定しています。

右・上・前の座標ブロック

この座標ブロックは、「自分が向いている方向を前」として場所を決めます。自分が立っている場所が「右0 上0 前0」です。

  • 右:右へ何ブロックか。マイナスにすると左になります(右 -2 は、左へ2)。
  • 上:上へ何ブロックか。マイナスにすると下になります。
  • 前:前へ何ブロックか。マイナスにすると後ろになります。

向いている方向が基準なので、東を向いて使えば東に、北を向いて使えば北に、いつも目の前に家が建ちます。

ポイント

このあと出てくる関数「エージェントMove」も、「右・上・前」と同じ考え方で、プラスが右、マイナスが左です。家の座標とエージェントの動きを、同じ感覚で考えられます。

上から見た図(かべの高さ)
前8
前7
柱
窓
柱
前6
前5
窓
窓
前4
前3
柱
戸
柱
前2
段
前1
前0
★
左3
左2
左1
中
右1
右2
右3
あなた丸石原木の柱窓ドア入口の階段屋根のはり出し(上のほう)

あなたの2マス前に入口の階段、3マス前から家が始まります。

コードの解説

① じゅんび:位置と向きを記録する

じゅんびのブロック
  • 「アイテム(鉄のシャベル)が使われた時」
    鉄のシャベルを使ったときに、中のプログラムが動きます。ここでいう「使った」とは、鉄のシャベルを手に持って右クリックすることです(スマホ・タブレットでは長押し)。
  • 「~0 ~0 ~0 にテレポートする」
    「~(チルダ)」は「今いる場所から」という意味です。~0 ~0 ~0 は「今いる場所から0マス」なので、自分を今いる場所にテレポートし直します。ブロックの境目に立っていると、家とエージェントの位置が1マスずれることがありました。このブロックを入れると、ずれが起きなくなります。
  • 「変数 基準向き を〜にする」
    今向いている方角(東西南北)を、変数「基準向き」に記録します。
  • 「変数 基準地点 を〜にする」
    今立っている場所を、変数「基準地点」に記録します。あとでエージェントをここに呼びもどすのに使います。

② 丸石の箱をつくる(中空モード)

丸石の箱をつくるブロック

「ブロックを並べる」は、範囲の始まりと終わりの2つの角を指定して、その間をブロックでうめるブロックです。

右は -2〜2、上は 0〜4、前は 3〜7 なので、どれも5マス。5×5×5の箱です(右のマイナスは左のことです)。

モードを中空にしたところ

ポイントは、モードを「中空」にしていることです。外側だけを丸石にして、中を空気にしてくれるので、これ1つで「かべ・床・天井」が全部できあがります。

③ 四すみに柱を立てる

4本の柱をつくるブロック

オークの原木を「ブロックを並べる」で4回置いて、4本の柱を立てています。モードは「置き換え」なので、②でつくった丸石のかべが原木に入れかわります。

4つのブロックの数字をくらべてみましょう。

  • 上:4つとも「0〜3」で同じです。だから、どの柱も高さ0から3までの、たてに4マスの柱になります。
  • 右と前:1本の柱の中では、始まりと終わりが同じ数です。だから、横には広がらず、たて1列になります。この2つの数を柱ごとに変えて、立てる場所を決めています。
柱 右 前 上
左手前 -2 3 0〜3
左奥 -2 7 0〜3
右手前 2 3 0〜3
右奥 2 7 0〜3

右の -2 と 2、前の 3 と 7 は、どちらも②の箱のはしっこの数です。つまり柱は、箱の四すみにぴったり立ちます。

④ 天井と入口をつくる

天井と入口をつくるブロック

1つ目のブロックでは、上が「4」の段をまるごと板材にしています。②でつくった丸石の天井を、上から板材に置きかえているのです。

あとから同じ場所にブロックを置くと上書きされるので、「まず箱をつくって、あとから部品を置きかえる」という順番でつくれます。

2つ目のブロックでは、入口になる 右0・前3 の、上1〜2の2マスを空気にして穴をあけています。床(上0)は残すので、家の床は地面より1マス高くなります。

⑤ 窓とたいまつを置く

窓とたいまつを置くブロック

1マスだけ置くときは「〜を…に置く」ブロックを使います。上から3つは板ガラスで、左(右-2)・右(右2)・奥(前7)のかべに1つずつ窓をつけています。丸石のかべの上から置くので、かべの一部が板ガラスに入れかわります。

最後の1つは、家の中(上3・前6)に置くたいまつです。

⑥ エージェントの準備と「エージェントMove」関数

ここからはエージェントの出番です。その前に、エージェントを動かすための関数を見ておきましょう。

エージェントMove関数のブロック

「エージェントMove」は、自分でつくった関数です。左右・上下・前後の3つの数をわたすと、エージェントを次の順番で動かします。

  1. 上へ「上下」ブロック
  2. 前へ「前後」ブロック
  3. 右へ「左右」ブロック

関数を使うと、3つの移動ブロックを「呼び出し エージェントMove」の1つで書けるので、プログラムがすっきりします。

ここがポイント

マイナスの数を入れると、反対向きに動きます。左右に -3 を入れると左へ3、前後に -1 を入れると後ろへ1ブロック動きます。上下にマイナスを入れれば下へ動きます。

数をわたす順番と、動く順番はちがいます。数は「左右・上下・前後」の順にわたしますが、動くのは「上→前→右」の順です。横(右)に動くのは最後なので、たとえば⑩では、先に前へ進んでドアから家に入り、それから横へ動けます。順番が逆だと、かべにぶつかってしまいます。

⑦ ドアと入口の階段を置く

ドアと入口の階段を置くブロック
  • 「エージェントを 基準地点 へ 基準向き 向きにテレポートさせる」エージェントを、①で記録した「基準地点」(自分が立っていた場所)に呼びよせて、「基準向き」(自分が向いていた方角)を向かせます。
    これで、エージェントの「前」と家の「前」がそろいます。エージェントが別の方角を向いたままだと、右・前の向きがずれて、ドアや屋根がおかしな場所にできてしまいます。
  • 「呼び出し エージェントMove 0 1 2」上へ1、前へ2ブロック動いて、入口の1マス手前(階段を置く場所の上)に移動します。
  • 「エージェントに(ドア)を 1 個、自分のスロット 1 番に設定させる」→「前へ置かせる」エージェントのスロット1番にオークのドアを入れて、目の前の入口に置かせます。ドアは向きが大事なブロックなので、エージェントに置かせると、正しい向きで置いてくれます。
  • 「エージェントに(階段)を 1 個、自分のスロット 1 番に設定させる」→「下へ置かせる」今度はスロット1番を階段に入れかえて、足もとに置かせます。地面から家の床へ上がるステップになります。

画像の最後の「呼び出し エージェントMove -3 3 -1」は、次の⑧の屋根づくりのスタート位置へ移動するブロックです。

⑧ 屋根をつくる(二重のくりかえし)

3段の屋根をつくるブロック

屋根づくりがこのプログラムの一番の見どころです。エージェントは家の外側を横歩きしながら、前に階段を置いていきます。手に持っているのは、⑦でスロット1番に入れた階段です。

スタート位置へ移動する

最初の「呼び出し エージェントMove -3 3 -1」で、上へ3、後ろへ1、左へ3ブロック動きます。ここが1段目の屋根の左手前のかどです。

1段分のしくみ

「くりかえし」の中に、もう1つ「くりかえし」が入っています。これを二重のくりかえしといいます。

  • 内側の「くりかえし 6 回」「エージェントに前へ置かせる」と「エージェントを右に1ブロック移動させる」を6回。階段を置いては右へ1歩、をくり返して、屋根の1辺ができます。
  • かどを回る3つのブロック「右に1ブロック移動」→「向きを左に変える」→「右に1ブロック移動」で、家のかどを回りこんで、次の辺のスタート位置に着きます。
  • 外側の「くりかえし 4 回」「1辺つくって、かどを回る」を4回くり返すと、家のまわりをぐるっと1周して、1段分の屋根ができます。

3段に重ねる

1段できたら「呼び出し エージェントMove 1 1 1」で、上へ1、前へ1、右へ1ブロック動きます。つまり「1つ上の、1つ内側のかど」です。そこから同じしくみで次の段をつくります。

画像を見くらべると、3つの段でちがうのは、内側のくりかえしの回数(6・4・2)だけです。1段上がるごとに屋根が小さくなるので、置く数が2つずつ少なくなっています。

段 上 内側のくりかえし 1周の大きさ
1段目 4(天井と同じ) 6回 7×7
2段目 5 4回 5×5
3段目 6 2回 3×3

考えてみよう

1段目は1辺が7マスなのに、置く数は6個です。なぜでしょう?

答え:かどのマスを2回数えないように、1辺につき「長さ − 1」個ずつ置いているからです。6×4=24個で、7×7の外周ぴったりになります。

家のまん中で切って、前から見た図
高さ6
高さ5
高さ4
高さ3
高さ2
窓
窓
高さ1
高さ0
地面
左3
左2
左1
中
右1
右2
右3
丸石板材屋根の階段窓

屋根は1段上がるごとに、左右1マスずつ内側に寄っていきます。

⑨ 屋根のてっぺんをふさぐ

屋根のてっぺんをふさぐブロック

3段目の屋根の輪は、まん中が1マスあいています。そこで「呼び出し エージェントMove 1 1 2」で、上へ1、前へ2、右へ1ブロック動いて、あなの真上に移動します。

次に、スロット1番を板材に持ちかえて「下へ置かせる」と、あなに板材でふたができます。これで屋根の完成です。

⑩ 家の中にベッドとチェストを置く

家の中にベッドとチェストを置くブロック
  • 「エージェントを 基準地点 へ 基準向き 向きにテレポートさせる」屋根の上にいるエージェントを、いったん最初の場所にもどします。⑦と同じブロックです。
  • 「呼び出し エージェントMove 0 0 2」前へ2ブロック進んで、入口の階段の上に立ちます。エージェントは階段を上れるので、そのまま歩いて行けます。
  • 「エージェントを 前 に向けてインタラクトさせる」目の前のものを「使う」ブロックです。ここでは、目の前のドアを開けています。
  • 「呼び出し エージェントMove -1 0 2」→ ベッドを持たせて「前へ置かせる」前へ2ブロック進んで家の中に入り、左へ1ブロック動きます。そこで前にベッドを置きます。前へ進んでから横へ動くので、かべにぶつかりません(⑥のポイント)。
  • 「呼び出し エージェントMove 2 1 2」→ チェストを持たせて「下へ置かせる」上へ1、前へ2、右へ2ブロック動いて、ベッドのとなりの上からチェストを置きます。
  • 最後の「テレポートさせる」エージェントを元の場所にもどします。家の中に閉じこめられず、次にまた使うときも同じ場所から始められます。

チャレンジしてみよう

材料を変えてみる

使うブロックを変えるだけで、まったくちがう見た目の家になります。たとえば、こんなテーマはどうでしょう。

材料を変えてつくったお菓子の家
お菓子の家
テーマ 壁 柱 天井・てっぺん 屋根(階段) 窓・明かり
お菓子の家 ピンクのコンクリート 白のコンクリート 白のコンクリート サクラの階段 ピンクの色付きガラス板
金ぴか御殿 金ブロック ダイヤモンドブロック エメラルドブロック クォーツの階段 グロウストーン
氷のお城 氷塊(パックドアイス) 雪ブロック 青氷 クォーツの階段 水色の色付きガラス板、シーランタン
海の家 プリズマリン ダークプリズマリン プリズマリンレンガ プリズマリンの階段 シーランタン
魔王の城 ブラックストーン 真紅の幹 ネザーレンガ ネザーレンガの階段 赤の色付きガラス板、ジャック・オ・ランタン
砂漠の家 砂岩 模様入りの砂岩 なめらかな砂岩 砂岩の階段 黄色の色付きガラス板
変える場所 ② ③(4つ) ④と⑨ ⑦ ⑤

材料を変えるときの注意

屋根は、⑦の階段を1か所変えるだけ。エージェントは⑦で持たせた階段を、入口と屋根の両方に使っています。羊毛やコンクリートには階段がないので、屋根にはできません。

天井は2か所変えます。④の天井と、⑨のてっぺんの板材です。

砂・砂利・コンクリートパウダーは使えません。重力で落ちるので、天井が家の中に崩れてしまいます。

ふつうの氷は使えません。たいまつの明かりで溶けて水になります。氷のお城では、溶けない「氷塊」や「青氷」を使い、たいまつはシーランタンに変えましょう。

鉄のドアは使えません。エージェントが開けられないので、⑩で家に入れなくなります。ドアは木の種類で変えましょう。

サクラの階段など新しめのブロックは、MakeCodeのバージョンによっては選べないことがあります。

屋根のくりかえしを関数にまとめる

⑧の屋根の3つのくりかえしは、ちがうのが内側のくりかえしの回数(6・4・2)だけでした。そこで、回数を「長さ」として受け取る関数「屋根を作る」をつくってみます。

屋根を作る関数のブロック

内側の「くりかえし」の回数のところに、関数の「長さ」を入れているのがポイントです。使うときは、「呼び出し 屋根を作る」に回数をわたします。

屋根を作る関数を使うところ

⑧の長いブロックが、「呼び出し 屋根を作る 6」「4」「2」の3つだけになりました。同じ動きを関数にまとめると、プログラムがとても読みやすくなります。

さらに「6・4・2」も、くりかえしと変数を使えば1つにまとめられます。挑戦してみましょう。

使う場所のコツ

このプログラムは、建てる前に地面を平らにしていません。坂や木がある場所で使うと、屋根の一部が置けずに欠けることがあります。平らな草原などで使いましょう。

プログラムを開いてみよう

このページのプログラムは、MakeCodeの共有リンクから開けます。リンクを開くと、自分のMakeCodeに読みこんで、そのまま動かしたり改造したりできます。