マイクラEEでmaze

maze(迷路)の作成アルゴリズムには色々ありますが、一番単純なアルゴリズムが棒倒し法です。棒倒し法のアルゴリズムは他で参照していただくとして、それをマイクラEE(教育エディション)で実装してみます。bedrock版でもプラグイン使うとMakecodeと連携できるようですが、マイクラEEではデフォルトでcode builder(中身はMakecodeと同じに見えます)が使えますからエージェントに迷路を作成させてみます。

いきなりですが、作成した画像は、

こんな感じです。

動画版は、

code builderのソースは以下のリンクから、

https://minecraft.makecode.com/88632-58071-51947-80905

① 初期化処理(『最初だけ』)で周りの囲いと一つおきに棒(以下ブロック)の配置をするための配列(リスト)を作成、リストを二つ作るのはブロックの重複置きチェックのために倒したブロックの配置を記憶しておくためです

② チャットコマンド”maze”を入力したときに、最初に枠と棒倒しの基準になるブロックを置き、次に迷路作成のための”make_wall”を呼び出しています

③ make_wall中では最初のブロックと二番目以下のブロックでは倒せる方向の可能性が違うので、引数で処理を分けて実際の棒倒し処理(“random_block”)を呼び出します。

④ random_block中では乱数で倒す方向を決めて、もし倒す方向に既にブロックが存在していれば、他の倒し先を乱数で決定して倒しますが、この処理も最初のブロック列と二番目以下のブロック列では処理が異なるのでロジックを分けて記述必要です

簡単に書くとこのような処理を行なっていますが、code builderのブロック言語でそこそこ長いコードを記述すると、コードの見通しが良くないので、実際のロジックの検証はPythonあるいはJavaScriptに展開されてコードで行うのが現実的。あとデバッグ機能のようなものも存在しないのでそこが不便なのと、変数のスコープがいまいちすっきりしないので、関数へはsize(正方形のサイズ)以外は引数渡しにしてローカル変数のごとく使っています。

これ以上に複雑なmazeロジックの記述はおそらく大変、

 

admin

 

マイクラEEを導入してみた

今年の6月から学校に限らず非営利団体でも使うことが可能になったので、以下のurl参考にしてアカウント取得してみた。

https://www.watch.impress.co.jp/kodomo_it/news/1330691.html

マイクラのアカウント取得前にはMicrosoft365 アカウント取得も必要ですが、これもなんとかクリアでめでたく使えるようになった。追加アカウントなどの管理は管理者の仕事になります。

追加アカウントを管理すると言うことは、個人情報を扱うことになるから組織のプライバシーポリシー制定しないといけない。

マイクラ複数ある版の学習側に振ったバージョンですが特徴は、

① コードビルダー(コード開発のビュー)が簡単に呼び出せる

② マルチプレイがサーバーを建てなくてもできる

③ マルチプレイの対象は同一ドメインに限定なので安全

④ 見守りのできる「クラスルームモード」がある

といったあたりでしょうか。

 

admin

マイクラの座標

普通に想定するのと、y軸とz軸が入れ違いになっているようです。

ブロック敷き詰めて平面作ろうとしたら壁になったから。

Unityもそうだから、一般的にはこう言う座標系が標準のようです。

 

admin

マイクラJava版でのmod使いの整理

Pyhtonを使うための構造は、

1) Forge:modの一つでmodの管理用mod

2) Raspberry Jam Mod:Java版でPython拡張を行うためのコネクタ

3) mcpiディレクトリ:macでは~/Library/”Application Support”/minecraft/mcpipyにhttps://github.com/arpruss/raspberryjammod/releases

からダウンロードしたpython-scripts.zipをこのディレクトリ以下にコピーするとmcpi.minecraft以下のライブラリが使えるようになる。

また実行したいスクリプトもこのディレクトリに配置します。

IDEはPhonnyでなくともこの構造が作れればなんでも良いことになります。コマンドラインから”/py”で使えるようにするためにもこのディレクトリ構成は維持必要です。

 

admin

マイクラのPython拡張(その2)

Phonnyからimport minecraft as minecraftだとパッケージが見つけられないとエラーを吐き出す。

minecraftを以下のように変更したらインポートできました。要はパッケージminecraftはmcpiディレクトリ配下と明示しないといけないのだと言う当たり前の理屈。

以前のfrom mcpi import minecraftでも良いけれども。

——————————————–

import mcpi.minecraft as minecraft
mc = minecraft.Minecraft.create()
mc.postToChat(“Hello World”)


CoderDojoではマイクラメジャーだからしばらく触ってみます。

 

admin

マイクラのPyhton拡張

マイクラのPython拡張はForge(これ自身がmodのひとつ)をインストールして外部のThonny(簡易のPython IDE)でmcpi(マイクラ用Pythonモジュール)をインポートすると、マイクラとのリンクができる。
~~~~~ 以下はチャットに文字表示させるスクリプト ~~~~~~
from mcpi import minecraft
mc = minecraft.Minecraft.create()
mc.postToChat(“minecraft python”)
この”hellow world”もどきを実行すると、マイクラの画面上にチャット表示される。
正式サポート外なので、マイクラやForge版数の版数が最新版では動作しなくて、マイクラ1.10まで落としてやって漸く動作。

 

admin