マイクラで『変数を使ってワープする』プログラムを作ってみよう
目次
関連記事
変数と条件を使ったワーププログラムを作る
やっほー 春日部つむぎだよ
なのなのだ ずんだもんなのだ
変数を使って建築までばっちりできるようになったのだ。 これからは変数マスターを名乗るのだ
変数とは、「数字や文字などのデータ保存しておける入れ物のこと」です。
保存しているデータは、設定するときに作動させたプログラム以外でも使用できます。
1つの変数に保存できるデータは1つで既に保存されている場合は上書きされますが、変数はいくつも作ることができるので必要な数だけ作りましょう。
ふふふ…! ずんだもん、それはまだまだ変数の序の口だよ…!
変数はすごく便利で、他にも色々なことができるんだよ!
な、なんだってー!
それじゃあ今回は「変数を使ったワーププログラム」を2種類作ってみよう!
使うのは『マインクラフト』と『メイクコード』の2つだよ! みんなも準備しておこう!
- 『MineCraft(マインクラフト)』はMicrosoftが提供しているサンドボックスゲームです。プレイヤーはブロックを積み上げて建物を作り上げたり、広い世界を冒険してモンスターと戦うことができます。メイクコードを使ってプログラミングをするためには統合版が必要です。
- 『MakeCode(メイクコード)』はMicrosoftが提供するオープンソースのプログラミング学習プラットフォームです。ブロックを使ったビジュアルコーディングとJavaScriptによるテキストコーディングの2種類のエディタを切り替えながら、プログラミングできます。
ワープ1の準備をしよう
ワープ1の動きを確認しよう
まずはワープ1をどう動かすかを確認するね
これはプログラムを動作させるたびにワープする場所を切り替えるようになっているよ
ワープ先を2箇所作ろう
動きが確認出来たらワープ先の目印を作ろう
今回はこんな感じで《ガラス》ブロックを置いた中心とその外側にワープするようにしようか
中心の座標を確認しておくのだ。 今回は[99,-60,-27]なのだ
もう一箇所は目印の外側ならどこでもいいから、[99,-60,-14]にしておくのだ。 目印は《樺の木材》にしておくのだ
プログラミングをはじめよう
コードを準備しよう
まずはコードを準備しようか。 今回使うのは【チャットコマンド”run”を入力したとき】【現在の位置から[0,0,0]にテレポートする】【ワールド[0,0,0]】【もし真なら~、でなければ~】【0=0】【変数を0にする】と変数【スイッチ1】だよ
変数の追加は、項目の一番上にある「変数の追加」を押すとできるからね!
コードは画面左にある項目のように分かれています。今回必要となるブロックと対応する項目は以下の通りです。
- プレイヤー ⇨ 【チャットコマンド”run”を入力したとき】【現在の位置から[0,0,0]にテレポートする】
- ポジション ⇨ 【ワールド[0,0,0]】
- 論理 ⇨ 【もし真なら~、でなければ~】【0=0】
- 変数 ⇨ 【スイッチ1】【変数を0にする】
準備ができたからプログラミングを始めるのだ
プログラミングをしよう
まずは動きの条件を作っていくよ。 今回はプログラムを動かすたびにワープ先を切り替えるんだよね
これは、変数でスイッチのような仕組みを作って切り替えていくんだ
電源のオンオフみたいなものなのだ?
そんな感じだね。 プログラム上ではスイッチのオンオフを数字で決めるんだ
今回なら、変数の中身を「0」と「1」の2つで切り替えて条件を分けるよ
ってことは、用意した【変数を0にする】を複製して片方は「1にする」ようにすればいいのだね
そうだね。 この2つのコードをワープするたびに交互に動かしてスイッチを切り替えていくね
条件と動きをまとめるとこんな感じだね
- スイッチ1の中身が0 → 《ガラス》の目印[99,-60,-27]に移動
- スイッチ1の中身が1 → 《樺の木材》の目印[99,-60,-14]に移動
なるほどなのだ、その条件分けのために【もし真なら~、でなければ~】のコードを使うのだね
その通り。 その「真」の部分に「スイッチ1の中身が0の時」っていう条件を書けばいいんだよね
【もし真なら~、でなければ~】コードは、条件を設定することで動作させるプログラムを分けるものです。
「真」の部分に条件を設定するコードを組み合わせることで条件分けができます。
そして、「スイッチ1の中身が0の時」っていう条件を作るために【0=0】を使うよ
【0=0】のコードは、左右の値が同じものかを判別するものです。
プログラミングでの「=」記号は「同じ」を表します
ちなみに、変数の中身を変更しなかったりプログラムを停止させると変数の中身は「0」になっているんだ
それなら、【0=0】の片方に変数を組み合わせるだけで使えそうだね
「変数=0」の時に動かしたらスイッチを切り替えるから「変数=1」にするようにプログラミングするのだ
逆に「変数=1」の時に動かしたら「変数=0」にするのだ
これでスイッチの切り替えはできたかな。 あとは【チャットコマンド”run”を入力した時】と組み合わせて動くようにしてみよう
今回は「ワープ1」をチャットに送信してプログラムを動かすように作っておくのだ。 ついでに【メッセージ”:)”を送信する】を使って確認できるようにするのだ
あとは『マイクラ』のチャットで「ワープ1」と2回送信してみるのだ
ちゃんと切り替わっているのだ。 あとはそれぞれのスイッチの時にワープできるように組み合わせるだけなのだ
「変数=0」の時は[99,-60,-27]に、「変数=1」の時は[99,-60,-14]にワープするんだったね
【現在の位置から[0,0,0]にテレポートする】に【ワールド[0,0,0]】を組み合わせて複製した後、座標を入力しよう
【ワールド[0,0,0]】コードは、座標の指定をワールド座標基準にするものです。
ワールド座標に指定しない場合は自分の位置が基準になるので注意しましょう。
ここまでできたら、さっきのスイッチプログラムと組み合わせてっと…
これで完成なのだ!
間違えても大丈夫だから落ち着いてやってね。入力ができたら右下のスタートボタンを押そう。ボタンの色が緑色から赤色になったら準備完了だよ
動かす前にはプログラムが合っているか確認しておくのだ!
動かしてみよう!
目印の上で『マイクラ』のチャットで「ワープ1」を送信するのだ
《ガラス》の目印と《樺の木材》の目印に交互にワープすれば成功だよ!
大丈夫だったのだ!
これでワープ1は完成だね。 次はワープ2を作っていこう!
ワープ2の準備をしよう
ワープ2の動きを確認しよう
まずはワープ2をどう動かすかを確認するね
これはプログラムを動作させた時に足元にあるブロックと対応するステンドグラスの上にワープするようになっているよ
なるほどなのだ。 まとめるとこんな感じなのだ
- 足元がダイヤモンドブロック ⇨ 青のステンドグラス
- エメラルドブロック ⇨ 緑のステンドグラス
- レッドストーンブロック ⇨ 赤のステンドグラス
- 上記以外のブロック ⇨ ワープせず「ワープする場所がわかりません」と表示
ワープに使うブロックを置こう
動きが確認出来たらワープ先の目印を作ろう。 今回はこんな感じにワープするね
- ダイヤモンドブロック ⇨ 青のステンドグラス
- エメラルドブロック ⇨ 緑のステンドグラス
- レッドストーンブロック ⇨ 赤のステンドグラス
そしたら、ステンドグラスの座標3点分をメモしておくのだ
- 青のステンドグラス ⇨ [141,-59,-12]
- 緑のステンドグラス ⇨ [141,-59,-8]
- 赤のステンドグラス ⇨ [141,-59,-4]
プログラミングをはじめよう
コードを準備しよう
今回は「ワープ用のプログラム」と「スイッチ切り替え用のプログラム」の2種類を作るね
まずはワープ用のコードだけど、さっき作ったワーププログラムを複製して使おうか
複製したプログラムの変更点は「変数【スイッチ2】を作って使用」と「【変数を0にする】コードを外す」と「テレポート先を増す」の3つだよ
わかったのだ。 ところで、複製はできたけどどうやって条件を増やすのだ?
条件を増やすときは、【もし真なら~、でなければ~】の左下についている「+」のボタンからできるよ!
できたのだ! あとはテレポート先を3つとテレポートしないときを設定して…
- 青のステンドグラス ⇨ [141,-59,-12]
- 緑のステンドグラス ⇨ [141,-59,-8]
- 赤のステンドグラス ⇨ [141,-59,-4]
- 上記以外のブロック ⇨ ワープせず「ワープする場所がわかりません」と表示
ワープ用のプログラムは完成だね!
次はスイッチ切り替え用の方だね。 こっちは【ブロックが[0,0,0]の地点に存在するか、確認する】【ずっと】【もしなら~、でなければ~】【変数を0にする】を使うよ
コードは画面左にある項目のように分かれています。今回必要となるブロックと対応する項目は以下の通りです。
- ブロック ⇨ 【ブロックが[0,0,0]の地点に存在するか、確認する】
- ループ ⇨ 【ずっと】
- 論理 ⇨ 【もしなら~、でなければ~】
- 変数 ⇨ 【変数を0にする】
準備ができたからプログラミングを始めるのだ
プログラミングをしよう
まずは足元にあるブロックの種類を判別できるようにしていこう
【ブロックが[0,0,0]の地点に存在するか、確認する】のブロックを変更するのと座標の入力だね
ブロックの変更はアイコンを押せばできるのだ。 とりあえず《ダイヤモンド》にしておくのだ
足元を指定するのは、【ワールド[0,0,0]】コードを使わずにy座標を「ー1」するだけで大丈夫だよ
y座標は上が「+(プラス)」の方向で下が「ー(マイナス)」の方向になります
これで「足元に《ダイヤモンド》があるか確認する」コードができたね
あとはさっき設定したテレポート先とスイッチの中身に合わせて条件を作っていくのだ
- ダイヤモンドブロック ⇨ スイッチ2の中身を「1」に
- エメラルドブロック ⇨ スイッチ2の中身を「2」に
- レッドストーンブロック ⇨ スイッチ2の中身を「3」に
- 上記以外のブロック ⇨ スイッチ2の中身を「0」に
…って、「0」を入れるときの条件が多すぎて設定するのが難しいのだ…
そういうときは範囲が狭いものを「もしなら~」で設定して、範囲の広いものは「でなければ~」で作ればいいんだよ
今回で言えばスイッチ2の中身が「1~3」の時は足元のブロックが1種類に限定されているから、これを基準に切り替えていくって感じだね!
なるほどなのだ。 とりあえずその3種類以外の時は全部「0」にしちゃえばいいのだね!
ということは、【ブロックが[0,0,0]の地点に存在するか、確認する】と【変数を0にする】を複製して…
こうだね!
これで完成なのだ!
間違えても大丈夫だから落ち着いてやってね。入力ができたら右下のスタートボタンを押そう。ボタンの色が緑色から赤色になったら準備完了だよ
動かす前にはプログラムが合っているか確認しておくのだ!
動かしてみよう!
目印の上で『マイクラ』のチャットで「ワープ2」を送信するのだ
足場のブロックに対応した場所へワープすればOKだよ!
無事にワープできたのだ! 特定のブロック以外だとチャットも送信されるのだ!
さいごに
今回は「変数を使ったスイッチでワープ」プログラムが作れたね
ワープ先の追加も「条件とスイッチ」を増やせばいいだけだから楽だったのだ!
スイッチはワープ以外でも使えるし、色々作ってみてね!
最後に練習問題を用意してみたから、よかったら挑戦してみてね!
プログラムを変更してみよう!
問題1
ワープ1をコピーして「スイッチ」を1つ増やしてみよう!
問題2
問題1で追加したスイッチを使ってワープ先を追加しよう!
問題3
ワープ2に「条件とワープ先」を追加しよう!