2016-07-27 8 views
0

Der folgende Code gibt mir die folgende Fehlermeldung:Lua Fehler Gitter 16x16 machen

attempt to index a nil value

-- Making grid 
grid = {} 
local i = 1 
local ii = 1 
mainx, mainy = love.graphics.getDimensions() 
while(i<=mainx) do 
    if(i%16==0) then 
     while(ii<=mainy) do 
      if(ii%16==0) then 
       grid[i][ii] = nil 
      end 
      ii = ii + 1 
     end 
    end 
    i = i+1 
end 

Ich weiß lua 1-basiert, aber ich weiß wirklich nicht, was hier schief geht.

Ein Update wird gerne appericated :)

HINWEIS: mainx, mainy 800 sein sollte und 600.

+0

Schon mal von einer 'for' -Schleife gehört? –

+0

Ja. Aber ich fand es nicht in diesem Fall als nützlich, da die Größe des Rasters nicht vollständig vordefiniert ist. –

+2

Sie sollten ein leeres Array 'grid [i] = {}' erstellen, bevor Sie es mit 'grid [i] [ii]' –

Antwort

3

Sie haben vergessen grid[i] zu {} zuweisen, bevor grid[i][ii] = nil tun. Zweite Dereferenzierung [ii] schlägt fehl, weil grid[i] == nil

ich Refactored Ihren Code unterhalb ein wenig.

-- Making grid 
local grid = {} 
local mainx, mainy = love.graphics.getDimensions() 
for i = 16,mainx,16 do -- syntax: for i = <start_value>, <max value (included)> [, <step>] 
    grid[i] = {}; 
    for ii = 16,mainy,16 do 
     grid[i][ii] = i*ii -- some value 
    end 
end