在我的游戏代码中,用户在网格中移动,如果他们落在宝箱上,他们的硬币收集会增加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
然而,当在我的代码中实现时,会发生以下错误: TreasureCoords [(x,y)] = 0 TypeError:list indices必须是整数,而不是元组 我相信这与上述代码使用TreasureCoords作为字典这一事实有关,因为它实际上是一个充满x和y值的列表,其中宝箱所在。我不相信我可以将我的TreasureCoords和BanditCoords更改为字典,因为值是随机设置的,并且值的数量由用户设置,因此我不知道如何设置键或任何东西。我该怎么办?
答案 0 :(得分:0)
由于元组发生了错误,解决此问题的最佳方法可能是使用字典,因为其余代码看起来甚至不需要更改为更改字典。
事实上,行Visits = TreasureCoords.get((x,y), None)
使用的get方法甚至不能在列表上工作,所以这使我认为代码本来就是用于字典。
您实际上可以将新项目添加到字典中:
dict = {"Key1": 1}
dict[(1, 2)] = 42
print(dict[(1, 2)]) # prints 42