教育版マインクラフトでのPython学習、Python 101 - Makecodeの続きです。
このコースでは、プログラミング環境MakeCodeを使ってPythonによるコーディングを学べます。
レッスン (ワールド) は全部で10回に分かれています。
今回はレッスン5と6の概要とプレイ感想をまとめました。
目次
Python 101 - MakeCode レッスン5 / レッスン6の概要
Python 101 - MakeCodeではいよいよエージェントが登場します。
エージェントは、コーディングで作業をしてくれるマインクラフト内ロボットのようなキャラクターです。
要点まとめ
○ 世界観:CodingMineというソフトウェア会社から、ロボット開発への協力を頼まれます。
○ 提供元:Minecraft Education
○ 学習目的:レッスン5と6ではループと条件分岐を使っていきます。
ワールドに入るとCodingMineというソフトウェア会社のCEOが登場。
ロボット (エージェント) の開発を手助けしてくれるよう頼まれます。
1レッスンあたりで出題される問題は大問3題。
レッスン5では、for文を使ったループへの理解を深めます。
レッスン6では、if / if else / elsif文を使った条件分岐を練習します。
Python 101 - MakeCode レッスン5 / レッスン6の詳しい学習内容
レッスン5 / レッスン6について、それぞれの学習目的と問題内容を詳しくみてみます。
Python 101 - MakeCode レッスン5
レッスン5の学習目的は以下のとおり。
Python 101 - MakeCode レッスン5の学習目的
○ コーディングにおけるループの概念を学び、活用する
○ エージェント用のコードを書いてみる
ワールドに入り、早速CEOに話しかけてみます。
英語テキストは、イマーシブリーダー機能を使うと音読や翻訳をしてくれます。



Python 101 - MakeCodeレッスン5のプログラミング課題は大問3問。
エージェントを動かすためのagent.xxxという形式のコマンドを利用して書いていきます。
問題1
エージェントに重い荷物を持って運んでもらいます。
agent.collect_all()、agent.move()、agent.place()を使ってプログラムを書いていきます。
パート1では1回のみの動作、パート2では同じ動作を4回するようにfor文を使ってループ構造にします。



問題2
エージェントに洗濯をしてもらいます。
agent.turn()を使い、洗濯機の中でエージェントが自ら (!?) 回転して洗濯します笑
パート2ではfor文の多重ループ(for文の中にfor文)をやってみます。



問題3
エージェントにカーペットを掃除してもらいます。
agent.move()でエージェントをうまく動かしながらagent.collect_all()でゴミを回収していきます。
for文を複数使い、多重ループやカウンタ変数、タブを正しく使えるように練習していきます。

Python 101 - Makecode レッスン6
レッスン6の学習目的は以下のとおり。
Python 101 - Makecode レッスン2の学習目的
○ コーディングにおける条件分岐の概念を学び、活用する
○ if、if else、elsifを活用する
レッスン6のプログラミング課題は大問3問。
条件分岐を使いながらエージェントに車の運転を教えます。
問題1
信号に従った停車と発進を教えます。
agent.detect()を使い、エージェントの左側にブロックがある場合に発進、停車、一時停車をするようにコーディングしていきます。
agent.detect()は、指定方向に隣接したブロックがあるかを調べて、TrueかFalseを返します。
パート1ではブロックがある場合に前進。パート2ではブロックがある場合に停止。パート3ではブロックがある場合に2秒停止するようにします。



問題2
道路標識に従ってエージェントが左折 / 右折をできるようにします。
agent.inspect()を使い、正面にあるブロックの種類によってエージェントを左か右に方向転換させます。
agent.inspect()は、指定方向に隣接したブロックを調べて、ブロックIDやデータを返します。
パート1では左折、パート2では左折と右折を使い分けて前に進めるようにします。



問題3
最後は、if分の条件の部分に論理演算子 (and / and not / or) を使って複数条件式を作ります。
エージェントの前方と左右にブロックがあるかを判断し、状況に応じて前 / 左 / 右に動くようにコーディングします。
エージェントが目の前の障害物ブロックを避けながらゴールまで辿り着くことができれば成功です!



プレイ感想 ー エージェントが意図した通りに動くと嬉しい!
Python 101 - Makecodeのレッスン5 / レッスン6では、ついにエージェントが登場しました。
ループや条件分岐を使いこなしてエージェントを動かすのですが、
各コマンドの実行結果が目に見えて確認できるので楽しいです。
パズルを解く楽しさと、正解した時の快感があります。
前回の変数や配列のレッスンでは飽きがちだった息子も、ここまでいけば逆に楽しくやっていました。
これまで同様、コードビルダー内には使用するコマンドやヒントが記載されているので、前提知識があればそれらヒントを頼りに書いていけます。
座学で軽く学んだ上で、実践編として挑戦すると楽いでしょう。
注意点など
日本語対応:デフォルトは英語。イマーシブリーダーを使えば翻訳してくれます。
まとめ
Python 101 - Makecodeのレッスン5とレッスン6についてまとめました。
この回ではエージェントを動かしながらfor文やif分を使ったコードを書いていきます。
ループと条件分岐を使いこなせば、エージェントを使ってできることもグッと広がります。
単純作業をエージェントに任せ、整地や建築を楽々高速でこなせるようになるのも目前!
全10回のレッスンも後半に入りました、引き続き遊んでレビューしていきます。
サポート資料
Python 101 with MakeCode - Lesson 5 指導者用のガイド資料、授業スライド、追加アクティビティへのリンクなどが見つかります。
Python 101 with MakeCode - Lesson 6 指導者用のガイド資料、授業スライド、追加アクティビティへのリンクなどが見つかります。