2017-02-26 4 views
0

私のゲームコードでは、ユーザーはグリッドの周りを移動し、宝箱に着くとそのコインコレクションは10増加します。しかし、同じ宝箱に3回乗ると、それは盗賊に変わり、コインコレクションを設定しますこれは、ユーザーが最初にいくつの値があるかを決定するときに、リスト内の個々の値を数えにくいために苦労しました。これは、そのために私が持っている現在のコードである:自分のコードに実装されるとき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 TypeError例外を=:リストインデックスは整数ではなく、タプルでなければなりません これは、上記のコードが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

いいえ私は辞書を作成する方法を知っていて、リンクしたWebページを読んだだけで、私は自分のコードにそれらを実装する方法がわかりませんし、私の質問に使用されたコードブロック。申し訳ありませんが、私の質問が広すぎる場合 – George

関連する問題