【マイクラ】プログラミングで「ドア開閉スイッチ」を作る!【メイクコード】
今回の内容
「レバーで開け閉めできるドア」プログラムを作る

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

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

今のお家は自動ドアなのだけど、自分の好きな時に開け閉めできるドアに変更したいのだ

なら今回は「レバーで開け閉めできるドア」を作ってみよう!


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

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

今回は「仕掛けの作成」と、「仕掛けの座標を確認」するよ!

今回はお家の作り方は解説しないから、みんなの好きな形で作っておいてね!
仕掛けを作ろう

まずは「《粘着ピストン》、《レバー》」を1つと「好きなブロック」を2つ用意してね

わかったのだ! 好きなブロックは《石》と《ダイヤモンド》を使うのだ!

準備ができたら、レバーを使うと粘着ピストンが動くようにブロックを置いていくよ

初めに、入口の近くに《石》を置いてその上にレバーを好きな向きで置いてね


置けたのだ

そしたら、《石》の下に《吸着ピストン》と《ダイヤモンド》をくっつけるよ


あとは、レバーを動かしたときにピストンが飛び出れば仕掛けは完成!


ピストンが飛び出したから大丈夫なのだ!

それじゃあ次は座標を確認していくよ!
仕掛けの座標を確認しよう

まずは、レバーを動かしたときに《ダイヤモンド》が来る座標を確認しよう

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


僕の所だと[87,-63,30]なのだ。 座標も確認したし、穴を埋めておくのだ

穴を埋めるときはピストン装置が動くように、《ダイヤモンド》の移動先は空けておいてね


穴を埋めたら、次はドアを作る範囲の座標を2つ調べていくね

ドアの範囲は、ドアの「右下と左上」になるよ。 対角線上に置ければいいから、「左下と右上」でもOK!

わかったのだ。 今回は「幅3×高さ3」のドアを作るのだ


僕の所だと左上の座標は[86,-58,33]、右下の座標は[84,-60,33]だったのだ!

ここまでできたら準備完了! あとは『メイクコード』に切り替えてプログラミングしていくよ!
プログラミングをはじめよう
コードを準備しよう

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

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

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

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

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

それができたら、【もし〈真〉なら~、でなければ~】に条件をつけるね。 今回は「レバーを引いたときに《ダイヤモンド》がワールドの決まった位置にあるかないか」を条件にするね。

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

今回はワールド座標で場所を確認するから、【ワールド[0,0,0]】と組み合わせて使おう
普通の座標指定([~0,~0,~0]表記)では自分が今いる位置が基準になり、ワールド座標指定([0,0,0]表記)ではそのワールドの座標が基準になるという違いがあります

それと、他にもワールド座標を使う所があるからあと2つ複製しておいてくれるかな?

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


複製ができたから【《ブロック》が[~0,~0,~0]の地点に存在するか、確認する】に組み合わせてから、【もし〈真〉なら~、でなければ~】に組み合わせるのだ


あとは、ブロックを《ダイヤモンド》にして、さっき調べた座標[87,-63,30]を入力すれば条件は完成なのだ!


次はドアの部分を作ったり消したりするプログラムだね!

まずは、さっき複製した2つの【ワールド[0,0,0]】コードを【ブロックを並べる】に組み合わせるよ


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

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


そこまでできたらそれを複製して、並べるブロックを《空気》と《石》にしよう


できたのだ。 これを【もし〈真〉なら~、でなければ~】と組み合わせるのだね!

そうだね。 今回は「《ダイヤモンド》が指定した座標にある」なら「《空気》を並べる」んだよね

だったら、《空気》を並べるプログラムを条件をつけた部分に、《石》を並べるプログラムを「でなければ」のところに組みあわせて…


これで完成なのだ!

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

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


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

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

レバースイッチのオンオフを切り替えてプログラムを動かしてみるのだ

「レバーを動かすとドアが開いて、戻すとドアが閉まる」なら今回の目標は達成だね!


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

おつかれさま! 今回は「レバーで開け閉めできるドア」プログラムを覚えたね!
- プログラムを動かす条件の作り方を覚えておこう!
- ブロックが指定の座標にあるかを確認する方法を覚えておこう!
- ブロックの並べ方を覚えておこう!

これで、気分によって自動型とレバー型を切り替えて使えるのだ!

今回作った装置はいろいろな仕掛けに使えるから、ぜひ覚えておこう!

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

今回作ったプログラムを複製して、レバーのオンオフを逆(オフでドアが開き、オンで閉まるよう)に変更しよう! ただし、座標は変更しないでね!

どこの座標を変更するか考えてみよう!
問題2

今回作ったプログラムを複製して、レバーのオンオフを逆(オフでドアが開き、オンで閉まるよう)に変更しよう! ただし、座標だけを変更してね!
座標を変更せずに逆にするにはどうするか考えてみよう!
問題3

レバーの装置を使って高さが2ブロック分の落とし穴を作成してみよう!
