chakokuのブログ(rev4)

テック・コミック・DTM・・・ごくまれにチャリ

Minecraft Education EditionのPython Coding Courseをやってみる→ Lesson4 の餌やりで正解がわからない

課題:Minecraft Education Edition(MEE)が使えるようになったので、Python Coding Course(Python 101)をやってみた。Lesson4のActivity 2: Dietary requirementsでは犬に適切な餌をやるのだが、RedStoneの使い方がわからないせいか、どうやったら正解になるのかわからない。雛形コードが用意されているのだけど、雛形コードで指定されているLocationがどの位置なのかも分からず、途方に暮れる。
取り組み:教師用テキストがあるので解答を打ち込んでみる
結果: 教師用テキストの正解ソースコードはMakeCodeで動く仕様であり、Lessonで起動されるエディタのPythonではエラーになる(打ち間違いだったらすみません)。だから、エディタをMakeCodeに切り替えて、シンプルなコードで材料供給装置を動かした(リストを学ぶべきステージなのだが、動かすことを優先してリストは使わず)

以下の画面が、Lesson4の犬の餌やりプログラミングのシーン

教師用テキストを参照、以下が雛形コード

以下が正解例

見比べると、、RedStoneを所定の座標に置くように修正されている。2匹目の犬用コードが入ってしまっていてわかりにくい部分もあるが、1匹目は4種類の素材を与えればいいので、配列のインデックスと0〜3を指定するように編集すれば良いようだ。

材料が入った箱の上の空間(-21, 45, -31) ~ (-21, 45, -23)にRedstome Blockを配置することで、Redsotne回路が働いて、材料の箱から肉やビタミン等が落下して、前方の壁に置かれたキャビネットに格納される仕組みのようであった。キャビネットに入った材料は、自分で取り出しに行って、犬の餌箱に入れる手順となるようであった。

動作確認のため、雛形ソースは無視して、Minectaft用の標準的なPython環境で動かせるようエディタをMakeCodeに切り替えて以下を打ち込んで動かした。結果、一匹目の犬のための餌を集めることはできた。だが、エディタを切り替えたせいか、次の犬には切り替わらないようなので、元の設定されたエディタを使う必要がある*1

blocks.place(REDSTONE_BLOCK, world(-21, 45, -31))
blocks.place(REDSTONE_BLOCK, world(-21, 45, -29))
blocks.place(REDSTONE_BLOCK, world(-21, 45, -27))
blocks.place(REDSTONE_BLOCK, world(-21, 45, -25))

元から使えるエディタの場合、blocksオブジェクトを指定すると「不明な変数」とエラーになる。worldオブジェクトを使う必要があるようだ。worldオブジェクトってどこで定義されているのかも不明。

MakeCodeでプログラムすると次のステージへの扉(ガラスの扉?)が開かないので、以下のコードを実行してplayerを次のステージに移動させた(これもチートの一種だろうか。。)

player.teleport(world(-41, 40, -17))

次のステージに移ったものの、猫の名前を間違っていてなおして欲しいと言われるのだが、何をどうしたらいいのか、サンプルコードがないと全く分からない。エディタをMakeCodeにするとサンプルコードが表示されなくなるので、解きようがない。。(先生用のテキストを見て考える手はあるけど。。)

先生用のテキストを見ると、サンプルコードが掲載されていて、猫の名前を文字列としてリストに入れておいて、playser.say(Cats_Names[n])でプレーヤが発話するというものであった。画面からだけでは何をどうしたらいいのか全く推測もできず、サンプルコードを見ないと分からない。。教材としてこれはどうなのだろうか・・・

やることはだいたいわかったので、復習のため、MakeCodeに切り替えずに最初から組み込まれている環境でもう一度このコースを流してみたい。

■参考URL
MEEの教師用解説ページ
https://education.minecraft.net/ja-jp/lessons/python-101-lesson-4

*1:と思ったが、一匹目が成功したら、2匹目の設問に切り替わった。一方、3匹目の犬をクリアしても次のステージへのゲートが開かない