TVアニメ『魔法使いの嫁』PV 第3弾
アニメ『魔法使いの嫁』
登場する魔法使いというのは外見は馬か何かのガイコツっぽくて、嫁は人間の女子なので、美女と野獣的な設定なんだろうなあと見始めましたが、野獣だと思ってた魔法使いは、紳士で優しくて声もいい。最初っからこの女子、チセに好印象っぽいです。ガイコツなんだけど、かっこよく感じてしまいますね。これかあ、男は顔じゃないってやつは。
チセが魔法を使うシーンで水晶が大変なことになりましたが、マイクラPIでも水晶の代わりにダイヤを使って、周囲を結晶化(というかダイヤ鉱石なので石化です)したいと思います。要するにまたダイヤです。
スクリプトを段階的に作っていきます。
まずはプレイヤーを中心として円を描くスクリプトです。以前「Minecraft PI EDでプラネタリウム」でやってますので、そのスクリプトの改造になります。
pi@raspberrypi:~/mcpi/api/python/mcpi $ cat yome1.py import minecraft import time,math mc = minecraft.Minecraft.create() while 1: hits = mc.events.pollBlockHits() for h in hits: if h.face == 1: pos = mc.player.getPos() r=6 d=60 for i in range(0,d+1): rad= 2 * math.pi/d * i z = pos.z + round(r*math.sin(rad)) x = pos.x + round(r*math.cos(rad)) mc.setBlock(x, pos.y-1, z, 56,0) time.sleep(0.1)
ここで魔法を使いたいと思います。剣を持って地面を右クリック。
ダイヤの円が描かれました。一部上に土ブロックがあるところだけ欠けてます。
次にY座標にも幅を持たせます。プレイヤーの周囲にダイヤの柱が現れます。
pi@raspberrypi:~/mcpi/api/python/mcpi $ cat yome2.py import minecraft import time,math mc = minecraft.Minecraft.create() while 1: hits = mc.events.pollBlockHits() for h in hits: if h.face == 1: pos = mc.player.getPos() r=6 d=60 for i in range(0,d+1): rad = 2 * math.pi/d * i z = pos.z + round(r*math.sin(rad)) x = pos.x + round(r*math.cos(rad)) for yy in range(0,6): y = pos.y + yy - 2 mc.setBlock(x, y, z, 56,0) time.sleep(0.1)
次は雪の上に描いてみましょう。
実行後。上から見ないとよくわかりませんね。
円の形に柱ができています。
いよいよ内側もダイヤで埋めていきます。
半径をfor文で繰り返せばよいです。
pi@raspberrypi:~/mcpi/api/python/mcpi $ cat yome3.py import minecraft import time,math mc = minecraft.Minecraft.create() while 1: hits = mc.events.pollBlockHits() for h in hits: if h.face == 1: pos = mc.player.getPos() for r in range(1,5): d=20 for i in range(0,d+1): rad=2 * math.pi/d * i z=pos.z + round(r*math.sin(rad)) x=pos.x + round(r*math.cos(rad)) for yy in range(0,6): y = pos.y + yy -2 mc.setBlock(x,y,z, 56,0) time.sleep(0.1)
また別のさらさらパウダー雪の上に円柱を出現させてみます。
中身の詰まったダイヤ円柱ができました。
最後に、ブロックが存在するかどうか(IDが0以外か)判定してから、ブロックが存在している座標だけダイヤですり替えます。
pi@raspberrypi:~/mcpi/api/python/mcpi $ cat yome4.py import minecraft import time,math mc = minecraft.Minecraft.create() while 1: hits = mc.events.pollBlockHits() for h in hits: if h.face == 1: pos = mc.player.getPos() for r in range(1,5): d=20 for i in range(0,d+1): rad=2 * math.pi/d * i z=pos.z + round(r*math.sin(rad)) x=pos.x + round(r*math.cos(rad)) for yy in range(0,6): y = pos.y + yy -2 id=mc.getBlock(x,y,z) if not id == 0: mc.setBlock(x,y,z, 56,0) time.sleep(0.1)
この木にかかるように石化の魔法をかけます。
木が半分だけダイヤ鉱石になってしまいました。
コメント