【发布时间】:2021-12-28 21:33:43
【问题描述】:
我有this code,它本质上将图像的像素转换为我的世界中的一个块,它为您提供了一个“地图”,说明该块的放置位置以便在游戏中形成图像:代码生成一个 csv 文件其中电子表格中的每个单元格对应一个块。
我想改进这一点,不仅输出 csv 文件,还输出一个 txt 文件,其中包含将在游戏中生成图像的 minecraft 命令。
此外,这些命令必须与玩家的 (x, y, z) 具有相对位置,这应该通过元组或其他东西在代码中通知。
所以,假设玩家在游戏中处于 0、0、0 时,我的 csv 看起来像
这是用于测试的 dict 形式的相同数据帧
{0: {0: 'minecraft:diorite', 1: 'minecraft:diorite', 2: 'minecraft:stone'},
1: {0: 'minecraft:stone', 1: 'minecraft:stone', 2: 'minecraft:cobblestone'},
2: {0: 'minecraft:block_of_raw_iron',
1: 'minecraft:diamond_block',
2: 'minecraft:gold_block'}}
我希望我的 txt 输出是
/fill 0 0 0 0 0 1 minecraft:diorite
/fill 0 0 2 0 0 2 minecraft:stone
/fill 1 0 0 1 0 1 minecraft:stone
/fill 1 0 2 1 0 2 minecraft:cobblestone
/fill 2 0 0 2 0 0 minecraft:block_of_raw_iron
/fill 2 0 1 2 0 1 minecraft:diamond_block
/fill 2 0 2 2 0 2 minecraft:gold_block
致不懂 minecraft 命令语法的人:
/fill {x_start} {y_start} {z_start} {x_end} {y_end} {z_end} {block}
带有 [start, end](都包括在内),x 横向移动,z 向上或向下。
我几乎尝试了所有方法,但我几乎放弃了这段代码,所以我删除了我的进度,抱歉:(
有人可以帮忙吗?提前致谢。
编辑 1.:为了更好的测试,这里是火影忍者的像素艺术(前 5 行)
{0: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 1: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 2: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 3: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 4: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 5: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 6: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 7: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 8: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 9: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 10: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 11: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 12: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 13: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 14: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:block_of_raw_iron'}, 15: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:sand'}, 16: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:snow_block', 4: 'minecraft:snow_block'}, 17: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:snow_block', 4: 'minecraft:snow_block'}, 18: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:snow_block', 4: 'minecraft:snow_block'}, 19: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:sand', 4: 'minecraft:sand'}, 20: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:sand', 3: 'minecraft:block_of_gold', 4: 'minecraft:sponge'}, 21: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:snow_block', 3: 'minecraft:diorite_slab', 4: 'minecraft:sand'}, 22: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:snow_block', 3: 'minecraft:snow_block', 4: 'minecraft:snow_block'}, 23: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:snow_block', 3: 'minecraft:snow_block', 4: 'minecraft:diorite_slab'}, 24: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:snow_block', 3: 'minecraft:sand', 4: 'minecraft:block_of_gold'}, 25: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:sand', 3: 'minecraft:sponge', 4: 'minecraft:sponge'}, 26: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:sand', 4: 'minecraft:white_terracotta'}, 27: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:snow_block', 4: 'minecraft:snow_block'}, 28: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:snow_block', 4: 'minecraft:diorite_slab'}, 29: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:snow_block', 4: 'minecraft:sand'}, 30: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:sand', 4: 'minecraft:sponge'}, 31: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 32: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:snow_block'}, 33: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 34: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 35: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 36: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 37: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 38: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 39: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 40: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 41: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 42: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 43: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 44: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}, 45: {0: 'minecraft:diorite_slab', 1: 'minecraft:diorite_slab', 2: 'minecraft:diorite_slab', 3: 'minecraft:diorite_slab', 4: 'minecraft:diorite_slab'}}
并且(我认为是)前 3 列的预期输出(再次假设玩家的位置为 0、0、0)。
/fill 0 0 0 0 0 45 minecraft:diorite_slab
/fill 1 0 0 1 0 45 minecraft:diorite_slab
/fill 2 0 0 2 0 26 minecraft:diorite_slab
/fill 2 0 27 2 0 29 minecraft:mushroom_stem
/fill 2 0 30 2 0 45 minecraft:diorite_slab
【问题讨论】:
-
你能提供一个可复制形式的示例数据框吗?您可以使用
df.head()获取前几行,使用df.to_dict()将其转换为文本格式。 -
完成@NickODell
-
“编辑 1”的预期输出是什么?你给了一本字典。这些是否假定为 x 和 y?由于字典总是连续的数字,它看起来很适合多维数组。
-
@hesham_EE 这是尼克建议的输出:
print(df.head().to_dict())。我假设使用 pandas.pydata.org/docs/reference/api/… 可能会以数据框格式为您提供。由于这是一个真实的情况,结果要大得多,我现在不能完全确定它是什么。当我发现时,我会制作和编辑。 -
@EricMendes 我对此进行了破解,对于火影忍者数据框,我从您那里得到了不同的结果。我不确定我所拥有的是否正确,你能检查一下吗? pastebin.com/xte8JWHf
标签: python pandas numpy python-imaging-library minecraft