Lesson 36:開く・閉じる信号
「もし〜なら」を使い、今の状態や合言葉に応じて、メッセージやブロックを変える単元です。
🧠 この単元のゴール
条件が本当のとき・そうでないときの違いを予想し、反応する仕掛けをつくれる。
開く・閉じる信号
同じ合言葉を入れるたび、緑と赤の信号を交互に出す。
🖼 完成イメージ
※条件による反応の違いを示すMinecraft風イメージです。
🌱 今回わかること
今の状態が「開いているか」で、次の反応を分ける条件
🧰 はじめる前の準備
前方に空いた場所を取り、同じチャットを何回入力したか数えよう。第38回は壁を用意し、入口を開ける場所を確認してから実行する。
🪜 つくり方
- 変数 isOpen を false で作る。
- 「もし isOpen なら」の上に赤、そうでなければ緑を置く。
- 最後に isOpen を反対の状態へ変える。
- signal を2回入力し、色とメッセージが交互になるか確かめる。
🔎 実行前に予想
条件は今、本当? どちらのメッセージ・ブロックが出る? 理由も言葉にしてみよう。
🧩 MakeCodeのブロック
MakeCodeブロックを読み込み中…
対応するTypeScriptコードを見る
let isOpen = false
player.onChat("signal", function () {
if (isOpen) {
blocks.place(REDSTONE_BLOCK, posCamera(0, 0, 4))
player.say("とじています")
} else {
blocks.place(EMERALD_BLOCK, posCamera(0, 0, 4))
player.say("ひらいています")
}
isOpen = !isOpen
})✅ 成功の見分け方
1回目は緑、2回目は赤、3回目は再び緑になる。
🎮 1か所だけ改造
赤と緑のブロックを入れ替えると、信号の意味はどう変わる?
🆘 うまくいかないとき
| 困ったこと | 確かめること |
|---|---|
| いつも同じ反応になる | 条件の中の変数が、実行の最後で正しく変わっているか確認する。 |
| 門が開かない | 第38回は先に key、次に gate と入力したか確認する。 |
| スタートできない | 第40回は先に ready を1回入力しているか確認する。 |
保護者・先生へ:「もし〜なら」の前に、今の状態を子どもに予想させます。正解・不正解より、理由を聞くことを大切にします。
