前言
我们在之前的博客中讲了如何使用mc的python api,如果有问题看这里。
这次,我们讲一下如何读取一个csv文件,我提前准备了一个:
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1
1,0,0,1,0,0,0,0,1,0,1,0,1,0,0,1
1,1,0,1,0,1,1,0,0,0,0,0,1,0,1,1
1,1,0,1,0,1,1,1,1,1,1,1,1,0,1,1
1,1,0,0,0,1,1,1,1,1,0,0,0,0,1,1
1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1
1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1
1,0,1,1,1,1,0,0,0,0,0,1,1,1,1,1
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1
1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1
1,0,1,0,1,1,1,1,0,1,1,1,1,1,0,1
1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1
1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1
这个是我们即将实现的迷宫。
csv文件的话,就是在一个个数据之间添加逗号分隔,别的也没什么了。
我们准备按照csv文件的内容,1为墙壁,来实现一个迷宫。
迷宫高两格,用黄金实现,底下还有一层的草方块地板。
实现
import mcpi.minecraft as minecraft
import mcpi.block as block
"""根据amze.csv文件创建一个迷宫"""
mc = minecraft.Minecraft.create()
# 填充
GAP = block.AIR.id
# 墙体
WALL = block.GOLD_BLOCK.id
# 地板
FLOOR = block.GRASS.id
f = open("maze.csv")
pos = mc.player.getTilePos()
ORIGIN_x = pos.x+1
ORIGIN_y = pos.y
ORIGIN_z = pos.z+1
z = ORIGIN_z
for line in f.readlines():
data = line.split(',')
x = ORIGIN_x
for cell in data:
if cell == "0":
b = GAP
else:
b = WALL
mc.setBlock(x,ORIGIN_y,z,b)
mc.setBlock(x,ORIGIN_y+1,z,b)
mc.setBlock(x,ORIGIN_y-1,z,FLOOR)
x += 1
z += 1
遍历整个文件,对每一行去除逗号,然后我们对每一个数字进行判断即可(因为读入的已经是字符串类型了,所以直接取值)
另外就是注意一下,不要搞错x、z 的增加问题,不然结果很诡异,而且很难查错。
这篇博客是关于csv文件创建的,感兴趣可以看一下。