Създаване на таблица в елементи на многомерни масиви и нейното изчертаване

Опитвам се да направя масив от врагове и да го начертая, но продължавам да получавам грешки, ако не е за самия масив, значи за лош аргумент във функцията за изтегляне: main.lua:38:лош аргумент#2 към 'правоъгълник'(число очаквано, получих нула) Може ли някой да обясни какво правя погрешно тук, използва ли се генерично за?

Код на масива:

enemies = {}
for i=0,7 do
    enemies[i] = {}
    for j=0,2 do
        enemy = {}
        enemy.width = 40
        enemy.height = 20
        enemy.x = i * (enemy.width + 60) + 100
        enemy.y = enemy.height + 100
        table.insert(enemies[i],enemy)
    end

end
end

Функция за рисуване:

--enemy
love.graphics.setColor(0,255,255,255)
for i,v in ipairs(enemies) do
    love.graphics.rectangle("fill", v.x, v.y, v.width, v.height)
end

person Juris Dumburs    schedule 20.05.2013    source източник


Отговори (1)


enemies = {}
for i=1,8 do
    for j=1,3 do
        local enemy = {}
        enemy.width = 40
        enemy.height = 20
        enemy.x = i * (enemy.width + 60) + 100
        enemy.y = enemy.height + 100
        table.insert(enemies, enemy)
    end

end

Не знам обаче дали това си възнамерявал. Както и да е, причината да получите нула е, че във вашата версия ipairs връща друга таблица, която съдържа три екземпляра на enemy. За да работи вашата версия, трябва да добавите още ipairs:

for i,v in ipairs(enemies) do
    for _,e in ipairs(v) do
        love.graphics.rectangle("fill", e.x, e.y, e.width, e.height)
    end
end

Моля, не забравяйте да използвате local за временни функции. И Lua масивите започват от 1, а не от 0.

person W.B.    schedule 20.05.2013
comment
Благодаря ви, работи и с няколко настройки показва 3 реда, единственият проблем е, че ми липсва една колона с врагове. - person Juris Dumburs; 21.05.2013