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)
この木にかかるように石化の魔法をかけます。
木が半分だけダイヤ鉱石になってしまいました。


コメント