Minecraft Pi EDで素数階段を上る(その2)

整数・自然数・素数
準備するもの
  • Raspberry Pi(確認環境はPi 2)
  • 端末ウィンドウ(ターミナルソフト)
  • Minecraft Pi ED

Minecraft Pi EDで素数階段を上る」で作った素数階段の散歩は楽しいことは楽しいのですが、今どこを歩いているかわかりません。
今の素数が分かるように、階段の横に数字を浮かべてみました。

数字は、毎度おなじみsysvbannerで作ります。
pythonからbannerコマンドを実行して戻り値にしたがってMinecraftPI上にブロックを配置します。

from subprocess import Popen, PIPE

cmd="banner 13"
p = Popen(cmd.split(' '), stdout=PIPE, stderr=PIPE)
result, err = p.communicate()
print

実行すると、以下のようにsysvbannerの結果が表示されます。

   #     #####
  ##    #     #
 # #          #
   #     #####
   #          #
   #    #     #
 #####   #####


これを素数を表示するように修正して、階段の横に浮かばせます。

from mcpi import minecraft
from subprocess import Popen, PIPE

mc=minecraft.Minecraft.create()
mc.setBlocks(-127,-30,-127,127,50,127,0,0)
mc.player.setPos(0,-30,-35)

colors=[1,2,3,4,5,6,7]

x=0
y=0
z=0
num=2
while num < 150:
	for i in range(num-1,0,-1):
		if i < 2:
			y = y + 1
			color=colors.pop(0)
			colors.append(color)	
			
			cmd="banner %s" % str(num)
			p = Popen(cmd.split(' '), stdout=PIPE, stderr=PIPE)
			result, err = p.communicate()
			yy=0
			xx=0
			for line in result:
				for c in list(line):
					if c=="#":
						mc.setBlock(xx-5, y+yy+10-30, z-30, 35,color)
					if c=="\n":
						yy=yy-1
						xx=0
					else:
						xx=xx-1

			break

		if (num % i) == 0:
			color=0
			break

	mc.setBlocks(x-3,y-30,z-30, x+3,y-30,z-30,35,color)
	num = num + 1
	z = z + 1

このように数字が浮かびます。
mcpi-primesstairs-withnum

コメント

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