この記事では、MakeCode for Minecraftのチュートリアル「Agent Build」について解説します。
「Agent Moves」の次にチャレンジしてみましょう。
「Agent Build」では、エージェントを使って四角形にブロックを置くプログラムを作ります。
プログラミングの基本「順次」「くり返し」「条件分岐」を学ぶことができますよ。
初心者さんにも分かるように、手順をひとつひとつていねいに解説していきます。
エージェントを自分の位置にもどす
チュートリアル「Agent Moves」のおさらいです。
エージェントを自分の位置にテレポートさせるプログラムをつくります。
- 「チャットコマンドを入力した時」ブロックの”run”をクリックし、”tp”と入力する。
- エージェントカテゴリーにある「エージェントを自分の位置にもどす」ブロックを出す。
- 「チャットコマンドを入力した時」ブロックの中に「エージェントを自分の位置にもどす」ブロックを配置する。
プログラムができたら、実行してみましょう。
- 「開始」ボタンをおしてから、マイクラの画面にもどる。
- 「T」キーをおして、チャット画面を開く。
- tp と入力し、「Enter」キーをおして実行する。
エージェントが自分の位置に移動しましたか?
エージェントの設定を追加する(動きながら置く)
エージェントに、動くたびにブロックを置く機能を追加します。
1.プレイヤーカテゴリーにある「チャットコマンドを入力した時」ブロックを出す。
2.チャットコマンドの”jump”をクリックし、”pd”と入力する。
3.エージェントカテゴリーにある「エージェントの設定を追加」ブロックを出す。
エージェントに機能を追加するブロックです。「動きながら置く」は、エージェントが動くたびにインベントリにあるブロックを置く機能です。
真偽の部分で、機能を有効(真)または無効(偽)にします。
4.「動きながら置く」機能を有効にしたいので、「偽」を「真」に変えます。
5.「チャットコマンドを入力した時」ブロックの中に、「エージェントの設定を追加」ブロックを配置する。
真偽値については「論理演算(かつ・または・ではない)とは?スクラッチ(Scratch)を使って解説」でくわしく解説しています。真(しん)と偽(ぎ)について、くわしく知りたい場合は参考にしてみてください。
エージェントのインベントリにアイテムを設定する
エージェントはプレイヤーと同じようにインベントリがあり、アイテムを持つことができます。
インベントリとは、持っているアイテムを管理する画面のことで、アイテムが入る1つ1つのマスをスロットといいます。
エージェントを右クリックすると、エージェントのインベントリを見ることができます。
エージェントのスロットは、1~27までの番号がふられています。
左上のスロット番号が1で、そこから右向きに数えていきます。上の段は1~9、 真ん中の段は10~18、下の段は19~27です。
では、エージェントのインベントリにアイテムを設定するチャットコマンドを作りましょう。
- プレイヤーカテゴリーにある「チャットコマンドを入力した時」ブロックを出す。
- チャットコマンドの”jump”をクリックし、”rl”と入力する。
- エージェントカテゴリーにある「エージェントにアイテムを自分のスロットに設定させる」ブロックを出し、「チャットコマンドを入力した時」ブロックの中に配置する。
- 「エージェントにアイテムを自分のスロットに設定させる」ブロックの「砂岩ブロック」を必要な数(1~64個)、スロット「1」番に設定する。
- エージェントカテゴリーにある「エージェントのスロット番号1を有効にする」ブロックを出し、「エージェントにアイテムを自分のスロットに設定させる」ブロックの下に配置する。
- 「エージェントにアイテムを自分のスロットに設定させる」ブロック
エージェントのインベントリスロットにブロックまたはアイテムを設定します。
設定するブロックまたはアイテムとその個数、インベントリの何番のスロットに設定するかを指定します。 - 「エージェントのスロット番号1を有効にする」ブロック
指定したインベントリスロットを有効にするブロックです。
スロット番号1に設定した砂岩を置きたいので、スロット番号1を有効にします。
エージェントを前に移動させる
チュートリアル「Agent Moves」のおさらいです。
エージェントを前に移動させるプログラムをつくります。
- プレイヤーカテゴリーにある「チャットコマンドを入力した時」ブロックを出す。
- チャットコマンドの”jump”をクリックし、”fd”と入力する。
- エージェントカテゴリーにある「エージェントを移動させる」ブロックを出し、「チャットコマンドを入力した時」ブロックの中に配置する。
- 1ブロック移動させるを3ブロック移動させるに変更する。
実行してみましょう!
下の順番で実行しましょう。
- rl:エージェントにブロックを追加
- pd:エージェントの設定を追加
- fd:3ブロック分前進
実行の手順
- 「開始」ボタンをおしてから、マイクラの画面にもどる。
- 「T」キーをおして、チャット画面を開く。
- コマンド入力し、「Enter」キーをおして実行する。
rlの実行結果
pdの実行結果
fdの実行結果
砂岩ブロックを置きながら、3ブロック分前進しました!
四角形を作るプログラムを考えよう!
「エージェントを移動させる」と「エージェントの向きを変える」ブロックを使って、四角形を作成するチャットコマンド”square”を考えて作ってみましょう!
エージェントの向きを変える
チュートリアル「Agent Moves」のおさらいです。
「エージェントの向きを変える」ブロックは、エージェントカテゴリーにあります。
エージェントの向きを指定した方向(左右)に変えるブロックです。
順番通りに命令を実行する
エージェントの動きを上から順番にならべられたでしょうか?
エージェントはならべられた命令を上から順番に実行していきます。
このように、順番通りに命令を実行することを順次実行といいます。
変数ループを使ってみよう!
プログラムを見てみると、同じ命令を何回も使っていますね。
くり返し(ループ)を使うと、同じ命令をくり返し実行することができます。
変数ループ「変数を0~4に変えてくりかえす」ブロックは、ループカテゴリーにあります。
変数の値を0~終わりの値まで1ずつ増やしながら、中のブロックを実行します。
変数は0から始まるので、4回くり返したい場合は0~3になります。
ループのメリット
- プログラムがシンプルで見やすくなること。
- 同じプログラムを何度も作らなくてよく、修正がかんたんになること。
もう少し大きな四角形を作りたくなったら、ループを使わない場合は4か所修正が必要ですが、ループを使うと1か所の修正ですみますね。
変数とは
変数は、プログラムで使う数字や文字のようなデータを一時的に保存するための場所のことです。
よく「数字や文字を入れておく箱」と言われたりします。
変数について「変数とは?スクラッチ(Scratch)を使ってわかりやすく解説」でくわしく解説しています。
実行してみましょう!
作ったプログラムを実行してみましょう。
- rl:エージェントにブロックを追加
- pd:エージェントの設定を追加する
- square:四角形を作る
エージェントの手持ちのブロックが十分ある場合は、rlコマンドを省略しても大丈夫です。
四角形を作ることができたでしょうか?
場合分けしてみよう!
実行してみると、エージェントは最後ブロックにぶつかり続けて、四角形が完成しません。
「エージェントに確認させる」と「もし…なら」ブロックを使って、目の前にブロックがある場合は向きを変えてよけるようにしましょう。
エージェントととなり合っている指定した方向のマスにブロックがあるか調べます。
エージェントカテゴリーにあります。
- 「もし…なら」ブロック
もし条件が正しい場合(真)、中の命令を実行します。正しくない場合(偽)は、何もしません。論理カテゴリーにあります。 - 「もし…なら でなければ」ブロック
もし条件が正しい場合(真)、「なら」の下にある命令を実行します。正しくない場合(偽)は、「でなければ」の下にある命令を実行します。
条件によって処理の流れを変える
「エージェントに確認させる」ブロックを「もし…なら・でなければ」ブロックの真の場所に配置します。
最初のかたまりには、エージェントの前のマスにブロックがあった場合の命令。でなければの中には、エージェントの前のマスにブロックがなかった場合の命令を置きましょう。
エージェントの前のマスにブロックがある/なしで処理が分かれるプログラムになりました。
このように、条件によって処理の流れが変わることを条件分岐といいます。
もう一度実行してみましょう!
実行する前に、エージェントを別の場所に移動するか、失敗した四角形をこわして場所を確保しましょう。
四角形はできたでしょうか?
まとめ
チュートリアル「Agent Build」について紹介しました。
今回使用した新しいブロック
- 「エージェントの設定を追加」ブロック
エージェントに機能を追加するブロックです。
今回は、「動きながら置く」機能を追加しました。
- 「エージェントにアイテムを自分のスロットに設定させる」ブロック
エージェントのインベントリスロットにブロックまたはアイテムを設定します。
- 「エージェントのスロット番号1を有効にする」ブロック
指定したインベントリスロットを有効にするブロックです。
- 「変数を0~4に変えてくりかえす」ブロック
変数の値を0~終わりの値まで1ずつ増やしながら、中のブロックを実行します。
- 「もし…なら」ブロック
もし条件が正しい場合(真)、中の命令を実行します。正しくない場合(偽)は、何もしません。
- 「もし…なら でなければ」ブロック
もし条件が正しい場合(真)、「なら」の下にある命令を実行します。正しくない場合(偽)は、「でなければ」の下にある命令を実行します。
プログラミングの基本となる3つの処理
今回のチュートリアルでは、プログラミングの基本的な処理の流れを学ぶことができました。
- 順次実行 … 順番通りに命令を実行すること。
- くり返し … 同じ処理を何回もくり返す処理。
- 条件分岐 … 条件によって、処理の流れをかえる。
プログラムは、この3つの処理の流れを組み合わせて作られています。
「【子ども向け】プログラミングの基本構造とは?- 順次、分岐、反復について学ぼう!」でも、くわしく解説しています。よかったら合わせて読んでみてください。