マインクラフトのサバイバルで使えるプログラム案を考えてみる の準備として、プログラミングロボット「エージェント」を動かすプログラムを組んでおきます。
エージェントはプログラムを与えないと、押しても引いても叩いても全く動くことのできないロボットなのです。
エージェントを呼ぶ
エージェントは自ら動くことができません。
エージェントにお仕事を頼みたくなったとき、自分のところまで来てもらえるようにします。
Make Code、左メニューの「プレイヤー」で「チャットコマンド”jump”を入力した時」を選んで、その中に「エージェント」の「エージェントを自分の位置にもどす」を入れ、 「チャットコマンド”jump”を入力した時」 の jump をわかりやすい表現に変えます。
例えばテレポート(Teleport)の頭文字 ”t” とかですかね。
これは各自好きに名前付けしていいです。
”tp” とか come here の頭文字 “c” や “ch” 日本語の “koi” とか、日本語で “来い” とかでも大丈夫です。
マインクラフトの方で「t」キーを押すと、コマンド入力欄が出てくるので、そこに ”t” と入力して実行したら、エージェントが自分の足元に移動します。
エージェントを動かす
呼び寄せたエージェントの位置を微調整する必要がよくあります。
まずは一歩前に進んでもらうプログラムを追加しましょう。
エージェントを呼んだときと同じく 「チャットコマンド”jump”を入力した時」 の “jump” を “f” とかに変えて、その中に 「エージェント」の 「エージェントを “前” に “1” ブロック移動させる」を入れます。
エージェントを呼んだときと同じように、コマンド欄に「f」と入力すると、エージェントが一歩前に移動します。
エージェントの向きを変える
これまでで、エージェントを呼び出して、前にすすめることができるようになりました。
これだけだと前にしか進めないので、方向を変えるプログラミを作ります。
「チャットコマンド”jump”を入力した時」 の “jump” を “l” とかに変えて、その中に 「エージェント」の 「エージェントの向きを左に変える」を入れます。
これでエージェントを左に向かせることができるようになりました。
ついでに右も向かせられるようにしましょう。
今作ったプログラムを右クリックして「複製」すると、プログラムのコピーができます。
コピーしたプログラムの 「チャットコマンド”l”を入力した時」 の “l” を “r” とかに変えて、 「エージェントの向きを左に変える」の「左」の横の下三角を押して「右」に変えます。
これで、コマンド欄に「l」を入れるとエージェントが左を向き、「r」を入れるとエージェントが右を向くようになりました。
引数を使ってみる
これまででエージェントを呼び出して、好きな場所に移動させられるようになりました。
しかし5歩前に進ませるのに「t」キーでコマンド欄を開いて「f」を入力するのを5回繰り返さないとならないのは、少しめんどくさいです。
引数を使って、一回のコマンドで5歩でも10歩でも進ませられるように改造します。
「チャットコマンド”f”を入力した時 」の横の+を押すとnum1というのが追加されます。
そして、ブロックメニューの「変数」を開くと「num1」というブロックが追加されています。
そのnum1ブロックを、 「エージェントを “前” に “1” ブロック移動させる」 の”1”の代わりに入れます。
これでコマンド欄に「f 5」(間に半角スペースが必要です)と入力すると、エージェントが5歩前に進むようになります。
「f -10」とすれば、後ろに10歩進みます。
ただこれですと、1歩だけ前に進めたいときもその都度「f 1」と入れる必要があり、これまた面倒です。
引数がないときは1歩前に進むように改良します。
ブロックメニューの「論理」を開いて「もし真なら」ブロックを、 「チャットコマンド”f”を入力した時 」 の上に挿入します。
同じく「論理」から「0=0」ブロックを選択して「もし真なら」の「真」の代わりに入れます。
そして「変数」の「num1」ブロックを「0=0」ブロックの、左側の「0」の代わりに入れます。
最後に 「もし真なら」ブロック のなかに、「変数」の中から「num1を0にする」を入れ、「0」を「1」にします。
これで、「f」だけなら1歩だけ、「f」のあとに数値を入れたらその数値分だけ、エージェントを移動させられるようになりました。
実際にマインクラフトでプログラムを動かした動画がこちら。
まずは、エージェントを希望の場所に移動させられるようになりました。
エージェントは足場がなくても空中に浮くことができます。
上下に移動させるプログラムも考えてみると、いいかもしれませんね。