gpt4 book ai didi

python - 从 Python 中的列表访问元组

转载 作者:太空宇宙 更新时间:2023-11-03 18:39:48 25 4
gpt4 key购买 nike

所以,我还不知道如何做到这一点。我正在为游戏制作 map 解析器,到目前为止,我在模块“maps”中有一个三维列表“mapData”。它存储包含瓷砖和地板 ID 的元组。因此,当我尝试绘制地板时,我会调用

if maps.mapData[mapIndex][x][y][0] == 0: c.blit(maps.grass, tileRect)

例如绘制草,并绘制我称之为的瓷砖

if maps.mapData[mapIndex][x][y][1] == 1: c.blit(maps.tallGrass, tileRect)

绘制高高的草丛。不过, [0] 和 [1] 是我感到困惑的地方。他们试图分别引用元组的第一个和第二个元素,但我怀疑我做错了,因为我收到此错误:

TypeError: 'int' object is not subscriptable

为了提供帮助,列表“mapData”初始化如下:

mapData = [[[0 for y in range(19)] for x in range(25)] for m in range(mapAmount)]
mapData[mapIndex["spawn"]][5][5] = (0, 1)

“mapIndex”是一个整数字典,指定什么 map 是什么。

所以,我需要知道如何从元组中获取特定元素,最好不使用 x, y = 元组,因为这需要更多的内存,因为它必须存储变量。这是在渲染循环中。如果这是唯一的方法,那么我也可以。谢谢!

作为一个附带问题,除了在渲染代码中制作巨大的 if+elif 语句之外,是否有人更好地了解要绘制哪个图 block ?

编辑:我尝试了这段代码:

 floor, tile = maps.mapData[mapIndex][x][y]

#draw floor
if floor == 0: c.blit(maps.grass, tileRect)

#draw tiles
if tile == 1: c.blit(maps.tallGrass, tileRect)

并得到错误:

TypeError: 'int' object is not iterable

最佳答案

感谢@LukasGraf,问题已经解决。并不是列表中的所有变量都被初始化为元组,所以我更改了这个初始化代码

mapData = [[[0 for y in range(19)] for x in range(25)] for m in range(mapAmount)]

到此

mapData = [[[(0, 0) for y in range(19)] for x in range(25)] for m in range(mapAmount)]

将列表中的默认值设置为元组 (0, 0) 而不是 0。

关于python - 从 Python 中的列表访问元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20756448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com