有一个循环,其中从“ .txt”加载数字以尝试创建用于碰撞的图块网格,并且由于某些原因,即使counter1和counter2递增,每个单元仍给出相同的精确x和y坐标。这是源代码:
counter1 = 0
counter2 = 0
string = ''
with open('map.txt', 'r') as f:
for line in f:
for character in line:
if character == '0':
pass
elif character == '1':
environmentVector.append(environment.environment1)
environmentVector[-1].x = counter1 * 32
environmentVector[-1].y = counter2 * 32
counter1 += 1
counter1 = 0
counter2 += 1
答案 0 :(得分:0)
正如我在评论中提到的那样,您多次将同一对象附加到向量中。看下面的例子
base_list = []
test_list = []
for i in range(0,5):
base_list.append(test_list)
base_list[-1].append(i)
print(base_list)
您可能期望输出
[[0], [1], [2], [3], [4]]
但您实际上会得到
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
因为您每次都向base_list添加相同的列表,所以在base_list中的一个位置对其进行编辑将对所有列表进行编辑。
解决方案是每次创建一个新的environment.environment1
对象。我无法告诉您如何在不知道该类是什么的情况下执行此操作,但是在上面的示例中,您会这样做;
for i in range(0,5):
base_list.append(list())
base_list[-1].append(i)