2017-06-04 41 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"