2017-06-04 81 views
0

pygame我對pygame來說相當陌生,我試圖循環查看數組,以檢查繪製出sprite的庫存時,它將從上往下繪製項目。例如,pygame循環查找繪製的位置

[empty] 
[empty] 
[empty] 

在這種情況下,如果玩家拿起物品,它會在第一個槽中繪製它。

[wood] 
[empty] 
[empty] 

現在,如果玩家拿起另一個物品,它會在第二個插槽中繪製它。

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"