【マイクラ】プログラミングで家に「自動ドア」を作る!【メイクコード】
今回の内容
おすすめ記事
「自動ドア」プログラムを作る

やっほー 春日部つむぎだよ

なのなのだ ずんだもんなのだ

探検に行っている間に、誰かが勝手にお家に入っていたみたいなのだ…。

それは怖いね…。 それじゃあ今回は自分だけに反応する自動ドアをプログラミングで作ろう!


それならセキュリティも万全でかっこいいのだ! 助かったのだ

それじゃあ『マイクラ』と『メイクコード』を準備してプログラミングを始めよう!
- 『MineCraft(マインクラフト)』はMicrosoftが提供しているサンドボックスゲームです。プレイヤーはブロックを積み上げて建物を作り上げたり、広い世界を冒険してモンスターと戦うことができます。メイクコードを使ってプログラミングをするためには統合版が必要です。
- 『MakeCode(メイクコード)』はMicrosoftが提供するオープンソースのプログラミング学習プラットフォームです。ブロックを使ったビジュアルコーディングとJavaScriptによるテキストコーディングの2種類のエディタを切り替えながら、プログラミングできます。
『マイクラ』で準備をしよう

まずは『マイクラ』の方準備をしていくね!

今回は「座標を調べるための目印を置く」のと、「ドアの開閉条件を設定」するよ!

今回はお家の作り方は解説しないから、みんなの好きな形で作っておいてね!
ドアの範囲に目印を置こう

まずはドアの大きさを決めて、座標を調べよう

それなら今回は「幅3×高さ3」のドアを作るのだ

大きさが決まったら、ドアの左下と右上(右下と左上でもOK!)に足が来るように目印を置こう

あとは目印の上に立って座標を確認するのだね!

座標とはプレイヤーの場所を表すもの(足元の場所)です
『マインクラフト』では座標はx座標(東西)、y座標(高さ)、z座標(南北)の3つがあり、[x,y,z]の順番で表示されています。
「-」記号のついた数字は、ついていない数字の反対方向になる場所と覚えておきましょう!


今回は左下の座標は[5,-60,8]、右上の座標は[3,-58,8]だったのだ!

これでドアを作る準備は出来たから、次はドアを開閉するための準備をしていこう
開閉するためのセンサーとなるブロックを置こう

今回は実際の自動ドアみたいに動かすから、「ドアの前に立ったら開いて、離れたら閉まる」ようにするね

そのためにドアの前後に《樺の木材》を置いて、「《樺の木材》を踏んでいたら《空気ブロック》でドアを消して、踏んでいなかったら普通のブロックを置く」っていう風に作るよ!
《空気ブロック》とは、ブロックのない空間に存在する目に見えないブロックのことです。
《空気ブロック》で置き換えた場所は何もない状態になります。

だったら、ドアの前後の足場を《樺の木材》にしておけばいいのだね!

余裕をもって、前後ともに2ブロック分まで《樺の木材》にしておくのだ!


これで準備が完了したから、プログラミングをしていこう!
プログラミングをはじめよう
コードを準備しよう

それじゃあコードを準備していくね。今回は【《ブロック》が[~0,~0,~0]の地点に存在するか、確認する】【《ブロック》を並べる】【ワールド[0,0,0]】【ずっと】【もし〈真〉なら~、でなければ~】を使うから準備しておいてね

コードは画面左にある項目のように分かれています。今回必要となるブロックと対応する項目は以下の通りです。
- ブロック ⇨ 【《ブロック》が[~0,~0,~0]の地点に存在するか、確認する】【《ブロック》を並べる】
- ポジション ⇨ 【ワールド[0,0,0]】
- ループ ⇨ 【ずっと】
- 論理 ⇨ 【もし〈真〉なら~、でなければ~】

準備ができたからプログラミングを始めるのだ
コードを組み合わせていこう
メイクコードでは以下のようにブロックを組み合わせてプログラミングしていきます。
- 凹凸のついたブロックは組み合わせられます
- 入力・選択部分が丸い形やをしているものは同じ形のコードをはめ込めます
凹凸の付いたブロックを組み合わて作る大まかな動きと入力・選択欄を変更して詳細な動きを設定していくのが、プログラミングの基本となります。

まずは【ずっと】と【もし〈真〉なら~、でなければ~】を組み合わせよう

【もし〈真〉なら~、でなければ~】のコードは、〈真〉の部分に条件を付けてそれが正しいかどうかを判定するものです。
条件が正しい(真)なら組み合わさっているコードが動作し、条件が間違っている(偽)なら「でなければ」の部分が動作します。

それができたら、【もし〈真〉なら~、でなければ~】に条件をつけるね。 今回は「《樺の木材》を踏んでいるか踏んでいなかいか」が条件だったね。

踏んでいるかどうかを判定するには【《ブロック》が[~0,~0,~0]の地点に存在するか、確認する】を使うのだ
【《ブロック》が[~0,~0,~0]の地点に存在するか、確認する】のコードは、指定したブロックが入力した座標にあるかを判別するものです。
単体では使えず他のコードと組み合わせて使用します。

ワールド座標を使わない状態でy座標を「-1」にすれば、自分の足の真下にあるブロックが判別できるのだ
普通の座標指定([~0,~0,~0]表記)では自分が今いる位置が基準になり、ワールド座標指定([0,0,0]表記)ではそのワールドの座標が基準になるという違いがあります

バッチリだね! そしたら【もし〈真〉なら~、でなければ~】の〈真〉の部分に【《ブロック》が[~0,~0,~0]の地点に存在するか、確認する】を組み合わせよう!

ついでに、ブロック部分を《樺の木材》に、y座標を「-1」に変更しておくのだ!


これで条件が設定できたね。 それじゃあ最後は実際にブロックを出したり消したりしてドアの開閉をする部分を作っていくよ

まずは、【ワールド[0,0,0]】のコードを複製してね

複製はコードを右クリックして出てくるメニューからできるのだ

複製が出来たら、2つの【ワールド[0,0,0]】コードを【ブロックを並べる】に組み合わせるよ


次は今できたプログラムを複製するんだけど、複製すると入力している座標とかもそのままコピーされるから、先に入力しておこう!

それじゃあ、始まりの範囲に[5,-60,8]を、終わりの範囲に[3,-58,8]を入力するのだ


これを複製して、ブロックの部分を《空気ブロック》と《岩盤》に変更するのだ!


《岩盤》はドア部分のブロックだから、みんなは好きなものを選んでね!

あとは、ドアを開くプログラムを「もし〈真〉なら」の中に、閉めるプログラムを「でなければ」の部分に入れたら完成!


これで完成なのだ!

それじゃあ実際にプログラムを動かしてみよう!

動かすには右下のスタートボタンを押して、ボタンの色が緑色から赤色になったら準備完了!


あとは『マイクラ』でプログラムを動かすために決めた条件の行動をすればOK!

動かす前にはプログラムが合っているか最終確認しておくのだ!
プログラムを動かそう!

《樺の木材》を踏んでプログラムを動かしてみるのだ

「《樺の木材》を踏んでいるとドアが消えて、踏んでいないとドアが閉まる」なら今回の目標は達成だね!


大丈夫だったのだ!
さいごに

おつかれさま! 今回は「自動ドア」プログラムを覚えたね!
- プログラムを動かす条件の作り方を覚えておこう!
- 座標の指定方法が2通りあることを覚えておこう!
- 自分の下にあるブロックを判別する方法を覚えておこう!

かっこよくてセキュリティも万全なのだ!

応用すればいろいろな場所にいろいろな形で自動ドアを作れるから、試してみてね!

最後に練習問題を用意してみたから、よかったら挑戦してみてね!
プログラムを変更してみよう!
問題1

《樺の木材》を踏んでいない時にドアが開いて、踏んでいる時にドアが閉まるようにしてみよう!

条件を変える方法を考えてみよう!
問題2

《樺の木材》がプレイヤーの2つ下の場所にある時にドアが開閉するようにしてみよう!

プレイヤー基準の座標指定を覚えよう!
問題3

今回作ったドアの大きさを「左右にそれぞれ1ブロックと高さを1ブロック」分大きくしてみよう!
