Объект Int не имеет атрибута __getitem__ - PullRequest
0 голосов
/ 26 декабря 2018

Я строю небольшую игру, используя Pygame, и мне нужно извлечь текущий тайл, на котором стоит игрок, и сохранить его в инвентаре.

Я просматривал форум на предмет аналогичной проблемы, но это не помогло мне решить мою проблему.Мне трудно понять, почему это не работает.

inventory = {
            Elements.DIRT : 0,
            Elements.GRASS : 0,
            Elements.WATER : 0,
            Elements.COAL : 0,
            Elements.ROCK : 0,
            Elements.LAVA : 0
        }

tilemap = [[Elements.DIRT for w in range(MAPWIDTH)] for h in 
range(MAPHEIGHT)]

for rw in range(MAPHEIGHT):
    for cl in range(MAPWIDTH):
        randomNumber = random.randint(0,100)
        if randomNumber == 0:
            tile = Elements.LAVA
        elif randomNumber >= 1 and randomNumber <= 10:
            tile = Elements.COAL
        elif randomNumber >= 11 and randomNumber <= 30:
            tile = Elements.WATER
        elif randomNumber >= 31 and randomNumber <= 75:
            tile = Elements.GRASS
        else:
            tile = Elements.DIRT
        tilemap[rw][cl] = tile


if event.key == K_SPACE:
        #What resource is the player standing on?
        currentTile = tilemap[playerPos[1][playerPos[0]]]
        #Player now has 1 more of this resource
        inventory[currentTile] += 1
        #The player is now standing on dirt
        tilemap[playerPos[1][playerPos[0]]] = Elements.DIRT
        print(inventory)

Я могу загрузить его, но я получаю, что объект int не имеет атрибута __getitem__ всякий раз, когда я нажимаю пробел.Я ожидал напечатать словарь инвентаря.

1 Ответ

0 голосов
/ 26 декабря 2018

У вас несоответствующие скобки в этих строках

currentTile = tilemap[playerPos[1][playerPos[0]]]

и

tilemap[playerPos[1][playerPos[0]]] = Elements.DIRT

Это должно быть:

currentTile = tilemap[playerPos[1]][playerPos[0]]  

и

tilemap[playerPos[1]][playerPos[0]] = Elements.DIRT

Ранее вы пытались получить доступ к двумерному массиву tilemap с индексом playerPos[1][playerPos[0]].Это само по себе пыталось получить доступ к playerPos[1] с индексом playerPos[0], откуда и произошла ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...