ChatGPTのMinecraftエデュケーションのプログラムの解説が初心者に親切だった件
ITエンジニアをしてます。プロググラミング教室を運営してます。小学生を対象にしたクラスではMinecraftエデュケーションを使ってレッスンをやってます。Minecraftエデュケーションにはエージェントというプレイヤーがプログラムでコントロールできる万能ロボットを呼び出せます。エージェントは決して破壊されることはなくその能力はプレイヤーの能力で決まります。1プレイヤーで1エージェントだけ呼び出せます。ジョジョの奇妙な冒険に出てくるスタンドのようなものです。
エージェントに何か大きなものを建築させたい。そうですね、進撃の巨人に出てくるウォールエリアを建築させましょう。まずはMinecraftエデュケーションに同梱されてるサンプルコードを確認します。タワーという名前のサンプルコードがありました。四角い空洞の枠を積み上げるプログラムなのでこれを改造してウォールエリアの建設をしてもらいましょう。可愛らしいエージェントがコツコツとブロックを巨人の進撃を食い止める壁を積み上げていく様子を眺めて楽しむことにしましょう。
まずはサンプルコードです。どこを修正したらいいのか見当をつけるためにこのプログラムの解説をチャットGPTにやってもらいましょう。
ChatGPT4>了解しました。以下に、このプログラムの解説を行います。
プログラムの全体的な目的:
このプログラムは、マインクラフトのエージェントに指示を出して、砂岩の塔を建設するものです。プレイヤーがチャットで "tower" と入力すると、エージェントが動き出します。
コードの詳細解説:
`def on_on_chat():`
これは関数の定義です。この関数は、プレイヤーが特定のチャットコマンドを入力したときに実行される内容を定義しています。
`agent.teleport_to_player()`
この行は、エージェントを現在のプレイヤーの位置にテレポートさせます。
`agent.move(FORWARD, 5)`
エージェントが前方に5ブロック移動します。
`agent.set_slot(1)`
エージェントのインベントリの1番目のスロットを選択します。
`agent.set_assist(PLACE_ON_MOVE, True)`
エージェントが移動するときに、選択されているアイテムを自動的に置くように設定します。
`agent.set_assist(DESTROY_OBSTACLES, True)`
エージェントが障害物に遭遇したときに、それを自動的に破壊するように設定します。
`for i in range(10):`
このループは10回繰り返されます。これは、塔の高さが10ブロックであることを意味します。
`for j in range(4):`
この内部ループは4回繰り返されます。これは、塔の各階の4つの面を作成するためです。
`agent.set_item(SANDSTONE, 16, 1)`
エージェントの現在のスロットに、最大16個の砂岩をセットします。
`agent.move(FORWARD, 4)`
エージェントが前方に4ブロック移動し、その間に砂岩を置きます。
`agent.turn(LEFT_TURN)`
エージェントが左に90度回転します。これにより、次の面を作成する準備ができます。
`agent.move(UP, 1)`
4つの面がすべて作成された後、エージェントは上に1ブロック移動します。これにより、次の階の作成が開始されます。
`player.on_chat("tower", on_on_chat)`
この行は、プレイヤーがチャットで "tower" と入力したときに、上記で定義した `on_on_chat` 関数を実行するように設定しています。
このプログラムを使用すると、プレイヤーが "tower" とチャットで入力すると、エージェントがプレイヤーの近くに砂岩の塔を自動的に建設します。
プログラムのコールと変更するポイントを探す
エージェントは歩きながらブロックを置いてます。エージェントは四角形にぐるっと一周すると1ブロック分上に移動しまた四角形にぐるっと一周するという動きを繰り返してます。
ウォールエリアを作るので四角形の一辺を大きくします。
>エージェントが前方に4ブロック移動し、その間に砂岩を置きます。
この数字が四角形の一辺の大きさです。この数字が大きくなるほどプログラムの実行時間が長くなるので最初は控えめに3倍の12にしておきます
>エージェントの現在のスロットに、最大16個の砂岩をセットします。
エージェントに持たせるブロックの数も増やしておきましょう。1周分のブロックの数は12×4なので48個ですね
改造したプログラムを実行してみます
うまくいきました。次は高さを変更してみます。実行時間が早くなるように高さを10ブロックから5ブロックに変更します。
>このループは10回繰り返されます。これは、塔の高さが10ブロックであることを意味します。
これでもうまくいきました。
この記事がプログラミングの学習をしている人のお役に立てば幸いです。
この記事が気に入ったらサポートをしてみませんか?