2017-06-04 21 views
0

私はPygameにはかなり新しく、スプライトのインベントリを描くときに上から下にアイテムを描画することを確認するために配列をループさせようとしています。たとえば、pygame円弧配列をどこに描画するのですか

[empty] 
[empty] 
[empty] 

この場合、プレーヤーがアイテムを取得した場合、最初のスロットに描画されます。今

[wood] 
[empty] 
[empty] 

プレイヤーが別のアイテムを拾った場合、それは2番目のスロットにそれを引きます。

inventory = {"logs": 10, "stones": 0, "sword": "none", "pickaxe": "none"} 

slots = [False, False, False, False, False, False, False, False, False, False] 

if inventory["logs"] > 0: 
    y = 90 #coordinate to draw the logs 
    for i in slots: 
     if i == "logs": 
      break 
     elif i == True: 
      y += 90 
     else: 
      slots[i] = "logs" 
    screen.blit(pygame.image.load("logs.png"), (invX, y)) '''draws the image 
    into the inventory area''' 

if inventory["stones"] > 0: 
     y = 90 
     for i in slots: 
      if i == "stones": 
       break 
      elif i == True: 
       y += 90 
      else: 
       slots[i] = "stones" 
     screen.blit(pygame.image.load("stones.png"), (invX, y)) 

これはすべてのコードではありませんが、すべてが必要です。最初に私はエラーリストを与えられていますインデックスは、strではなく、整数またはスライスでなければなりません、そして、第二に、石を描き、互いに上に画像を記録します。

+0

コード内の問題は何ですか? –

+0

申し訳ありませんが、問題は言及していませんが、更新はありません。 – Mattattack

答えて

0

for i in slots:を使用すると、iは数字インデックスだけでなくリストの実際の要素です。角括弧を次のように変更してください。

else: 
    slots[slots.index(i)] = "logs" 
関連する問題