【Minecraft】城壁を作ってみる
2020年5月11日
ピラミッドができましたので、それをちょっと応用して城壁を作ります。かっこいい城壁を作ってみたいですが、いきなりは難しいので、簡単だけどそれなりにかっこよく見える城壁に挑戦します。
イメージは、ヨーロッパの戦闘用のお城で敵の侵入を防ぐことができるぐらい高く、四角形で囲む城壁です。上部は高い部分と低い部分があり、低い部分には松明なんかもおいてみましょう。
では、いきなりのコードです。
import mcpi.minecraft as minecraft
import mcpi.block as block
import server
import sys
mc = minecraft.Minecraft()
mc.postToChat("Wall!")
playerPos = mc.player.getPos()
mc.player.setRotation(0)
width = 31
height = 6
org_x = playerPos.x + 5
org_y = playerPos.y
org_z = playerPos.z + 5
# X軸側の壁(手前)
for y in range(0, height):
for x in range(1, width):
mc.setBlock(
org_x + x,
org_y + y,
org_z,
block.STONE_BRICK)
for x in range(1, width, 2):
mc.setBlock(
org_x + x,
org_y + height,
org_z,
block.STONE_BRICK)
for x in range(2, width, 2):
mc.setBlock(
org_x + x,
org_y + height,
org_z,
block.TORCH)
# X軸側の壁(奥)
for y in range(0, height):
for x in range(1, width):
mc.setBlock(
org_x + x,
org_y + y,
org_z + width,
block.STONE_BRICK)
for x in range(1, width, 2):
mc.setBlock(
org_x + x,
org_y + height,
org_z + width,
block.STONE_BRICK)
for x in range(2, width, 2):
mc.setBlock(
org_x + x,
org_y + height,
org_z + width,
block.TORCH)
# Z軸側の壁(手前)
for y in range(0, height):
for z in range(1, width):
mc.setBlock(
org_x,
org_y + y,
org_z + z,
block.STONE_BRICK)
for z in range(1, width, 2):
mc.setBlock(
org_x,
org_y + height,
org_z + z,
block.STONE_BRICK)
for z in range(2, width, 2):
mc.setBlock(
org_x,
org_y + height,
org_z + z,
block.TORCH)
# Z軸側の壁(奥)
for y in range(0, height):
for z in range(1, width):
mc.setBlock(
org_x + width,
org_y + y,
org_z + z,
block.STONE_BRICK)
for z in range(1, width, 2):
mc.setBlock(
org_x + width,
org_y + height,
org_z + z,
block.STONE_BRICK)
for z in range(2, width, 2):
mc.setBlock(
org_x + width,
org_y + height,
org_z + z,
block.TORCH)
mc.postToChat("Wall constructed!")
城壁はSTONE_BLOCK
で作ります。4辺の城壁を1つ1つ作ります。
まず、最祖にX軸方向にブロックを並べ、その上に1つ飛ばしでブロックを置き、壁上部の凹凸を表現します。低い箇所には松明を置きます。
同じことをZ軸方向に対しても行い、ぐるっと囲む城壁の完成です。
このコードを、例えばWall.pyなどの名前でmcipy
`フォルダに保存し、Minecraftのゲーム画面のチャットから、
/py wall
と入力すると、次のような城壁ができるはずです。簡単にできますが、それなりにかっこよく見えますね。