Minecraft PI EDTIONのAPIを使ってマップを取得(その2)

Minecraft Pi Edition
minecraft pi

TVアニメ『霊剣山 星屑たちの宴』。中国でアニメ配信再生数一億超ってすごいですね。訓練して強くなる、また訓練する、そして強くなる、周囲の人たちも感化され訓練して強くなる。とにかく訓練して強くなるってアニメなのですが、それが面白いです。あと用語がやたら多いのですが、意味が分かってないのに、うすらぼんやり分かってきて、もう一回見れば、また違った楽しみ方ができるんじゃないだろうかと思います。なので、内容をすっかり忘れたころにもう一度見てみようかと。

私は普段からマウスを使わないので、マインクラフトは超絶難しいです。まあ、これも訓練かと。冒頭の動画は、小さな空間にオブジェを作ろうとしてマウス操作と格闘した動画です。パラパラ画像をつなぎあわせているだけですので、少々見づらいですが。

完成したオブジェは、何故でしょうか、鍵っぽくなりました(将来の記事の伏線でしょうか)。この鍵のオブジェと、その周辺の空間のブロックIDを取得して、VPythonで描画しようと思います。

では、いきなりコマンドです。

~$ python -c'
> from visual import *
> import minecraft
> mc=minecraft.Minecraft.create()
> display()
> for x in range(0,11):
>   for y in range(0,11):
>     for z in range(0,11):
>       t = mc.getBlock(x,y,z)
>         if t != 0:
>           box(pos=(x,y,z))'

10x10x10の大きさのオブジェを作ろうとしたのですが、マインクラフトの操作で、うっかり11x11x11にしてしまったので、0〜10までの指定になっています。

嗚呼、それにしても長いコマンドです。もうコマンドラインで実行する意味はないと言われそうです。
しかし私は、たとえ長くても、血肉とするために、同じことを繰り返す信条を持っています。今でこそコマンド入力は、指が勝手に動いている状態ではありますが、コマンドを覚える当初は、tarのオプションでさえもまごついていました。
なぜlsやcdは覚えているのに、tarが覚えられないのか。
単純に使う頻度の違いです。tarが覚えられないなら、tarを1万回でも入力すれば良いのです。

プログラマーは、DRY原則(Don’t repeat yourself。同じことを繰り返さない)について気をつけていますが、訓練は例外だと思います。むしろ同じことを繰り返してスキルにした方が良いと私は考えています。
さらに良いことに、同じことを繰り返すうち、語句一つ一つについて深く考えるようになっていきます。初心者だった頃は、深く考えなかったシングル、ダブル、バッククォート、コロンやセミコロンの違い、スペースが入るのか入らないのか、Windowsではどうなのか、言語を含めた各コマンドの仕様、いろいろ気になるようになってきます。
今回はpythonを使ってますが、リスト内包表記を使ってみたり、

~$ python -C'
> import visual,minecraft
> mc=minecraft.Minecraft.create()
> visual.display()
> lis=range(0,11)
> for xyz in [ (x,y,z) for x in lis for y in lis for z in lis]:
>   if mc.getBlock(xyz) != 0:
>     visual.box(pos=xyz)'

itertoolsを使いたくなったり。

~$ python -c'
> import minecraft,visual,itertools
> mc=minecraft.Minecraft.create()
> display()
> for xyz in itertools.product(range(0,11),repeat=3):
>   if mc.getBlock(xyz) != 0:
>     visual.box(pos=xyz)'

発展途上でありますので、いろいろ見つかりそうです。

コマンドライン上で実行できるコマンドは多くありますし、これからも増え続けるでしょうから、飽きることのない楽しい訓練が続けられそうです。
訓練した先に何が待っているのか。それは決まっています。次の訓練です。
そして、訓練して強くなる、です。

あ、それで、VPythonの描画の方はどうなったかというと、このように表示されました。
(全マップのブロックIDを取得して描画するのも、基本的にはこれと変わりません)
mcpi-key

コメント

タイトルとURLをコピーしました