2017-02-26 195 views
0

在我的遊戲代碼中,用戶圍繞着一個網格移動,如果他們着陸在寶箱上,他們的錢幣收集量將增加10點。然而,一旦你登陸同一個寶箱3次,它會變成一個盜賊並設置你的錢幣收藏爲0.我掙扎於此,因爲當用戶確定首先有多少值時,很難計算列表中的單個值。這是當前代碼我爲:在Python中的列表和字典之間進行切換?

 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 類型錯誤:列表索引必須是整數,而不是元組 我相信這是爲了處理上述代碼使用TreasureCoords作爲字典的事實,實際上它是一個充滿x和y值的列表,寶箱位於其中。我不相信只要將我的TreasureCoords和BanditCoords改爲詞典,因爲這些值是隨機設置的,值的數量是由用戶設置的,所以我不知道如何設置密鑰或任何東西。我該怎麼辦?

回答

0

由於元組發生錯誤,解決此問題的最佳方法可能是使用字典,因爲其餘代碼看起來好像根本不需要更改爲字典。

事實上,行Visits = TreasureCoords.get((x,y), None)使用get方法,它甚至不能在列表上工作,所以這讓我認爲代碼本來就是用來處理字典的。

實際上,你可以增加新項目的字典:

dict = {"Key1": 1} 
dict[(1, 2)] = 42 
print(dict[(1, 2)]) # prints 42 

你或許應該閱讀這也:https://learnpythonthehardway.org/book/ex39.html

+0

是的,我同意了線的造訪= TreasureCoords.get((X,Y),無)使用字典方法,但我不知道如何將我的列表更改爲字典。該行本身並不真正起作用,因爲TreasureCoords是一個列表,並且已被分配TreasureCoords = random.sample(PossibleCoords,TCNumber),其中PossibleCoords是網格中的所有座標列表,當用戶設置網格時,大小和TCNumber更改每場比賽的比賽,因爲它是由用戶設置的。 – George

+0

@George不幸的是,stackoverflow不用於回答這些廣泛的問題。我給出的答案是,你應該嘗試字典,如果你不知道如何做,那麼你需要了解字典 - 它的簡單。 –

+0

不,我知道如何創建一個字典,並閱讀了您鏈接到我的網頁,我只是看不到我如何將它們實現到我的代碼中,並想知道是否有一個替代方法用於我的問題中使用的代碼塊。對不起,如果我的問題太廣泛 – George

相關問題