鉄のシャベルを持って右クリック(使う)すると、目の前に村によくある家が建つプログラムです。MakeCode for Minecraft のブロックを見ながら、どのブロックで家のどこができるのかを解説します。
できあがる家
| 大きさ | かべは 5×5マス、高さ5マス。屋根のはり出しを入れると 7×7マス |
|---|---|
| つかう材料 | 丸石、オークの原木、オークの板材、板ガラス、たいまつ、オークのドア、オークの階段、ベッド、チェスト |
| 建つ場所 | プレイヤーの目の前(向いている方向に建つ) |
| 動かし方 | 鉄のシャベルを持って右クリック |
プログラムの流れ
このプログラムは、ブロック命令で大きな部分を一気につくり、エージェントに細かい部分をまかせる、という2段がまえになっています。

- 自分の位置と向きを記録する
- 丸石で中が空っぽの箱をつくる
- 四すみにオークの原木の柱を立てる
- 天井を板材にして、入口に穴をあける
- 窓(板ガラス)とたいまつを置く
- ドアと入口の階段を置く
- 屋根を3段つくる
- 屋根のてっぺんをふさぐ
- 家の中にベッドとチェストを置く
- エージェントを元の場所にもどす
座標の考え方(posCamera)
このプログラムでは、ブロックの位置をすべて posCamera(左右, 上下, 前後) で指定しています。posCamera は「自分が向いている方向を前」として位置を決める座標です。
だから、東を向いて使えば東に、北を向いて使えば北に、いつも目の前に家が建ちます。
ポイント
posCamera の1つ目の数(左右)は、プラスが右、マイナスが左です。
このあと出てくる「エージェントMove」も同じく、プラスが右です。家の座標とエージェントの動きを、同じ感覚で考えられます。
あなたの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つとも「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」は、自分でつくった関数です。左右・上下・前後の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」は、次の⑧の屋根づくりのスタート位置へ移動するブロックです。
⑧ 屋根をつくる(二重のくりかえし)

屋根づくりがこのプログラムの一番の見どころです。エージェントは家の外側を横歩きしながら、前に階段を置いていきます。手に持っているのは、⑦でスロット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の外周ぴったりになります。
屋根は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)だけでした。そこで、回数を「長さ」として受け取る関数「屋根を作る」をつくってみます。

内側の「くりかえし」の回数のところに、関数の「長さ」を入れているのがポイントです。使うときは、「呼び出し 屋根を作る」に回数をわたします。
.png)
⑧の長いブロックが、「呼び出し 屋根を作る 6」「4」「2」の3つだけになりました。同じ動きを関数にまとめると、プログラムがとても読みやすくなります。
さらに「6・4・2」も、くりかえしと変数を使えば1つにまとめられます。挑戦してみましょう。
使う場所のコツ
このプログラムは、建てる前に地面を平らにしていません。坂や木がある場所で使うと、屋根の一部が置けずに欠けることがあります。平らな草原などで使いましょう。
プログラムを開いてみよう
このページのプログラムは、MakeCodeの共有リンクから開けます。リンクを開くと、自分のMakeCodeに読みこんで、そのまま動かしたり改造したりできます。
