在我的游戏代码中,用户在一个网格中移动,如果他们落在宝箱上,他们的硬币收藏量会增加10。然而,一旦你在同一个宝箱上着陆3次,它就会变成一个强盗,并将你的硬币收藏设置为0。我很难做到这一点,因为当用户首先确定列表中有多少个值时,很难计算列表中的单个值。这是我目前的代码:
TreasureCoords[(x,y)] = 0
Visits = TreasureCoords.get((x,y), None)
if Visits is None:
pass # Nothing happens
elif Visits > 3:
print("Uh oh there's a bandit! Your coin collection is now 0.")
CoinCollection = 0
else:
print("You have landed on a treasure chest! You can visit it %i more times before it becomes a bandit." % (2 - visits))
CoinCollection += 10
TreasureCoords[(x,y)] += 1
但是,在我的代码中实现时,会出现以下错误: 财务坐标[(x,y)]=0 TypeError:列表索引必须是整数,而不是元组 我相信这是因为上面的代码使用了TreaseCoords作为字典,而实际上它是一个充满了x和y值的列表,宝箱所在的位置。我不相信我可以只是把我的TreaseCoords和BanditeCoords改成字典,因为值是随机设置的,值的数目是由用户设置的,所以我不知道你会如何设置一个键或任何东西。我该怎么办?你知道吗
这个错误是由于元组而发生的,解决这个问题的最好方法可能是使用字典,因为您的代码的其余部分看起来甚至不需要更改为字典。你知道吗
事实上,
Visits = TreasureCoords.get((x,y), None)
行使用了get方法,该方法甚至不适用于列表,因此这使我认为该代码无论如何都适用于字典。你知道吗实际上,您可以向字典中添加新项:
你也应该读一下:https://learnpythonthehardway.org/book/ex39.html
相关问题 更多 >
编程相关推荐