Dzień dobry
Piszę prosty program w LUA, dokładnie opieram się o silnik Love2D ale to nie powinno wprowadzać wielkiego zamieszania.
Otóż mój problem polega na tym że gdy wybieram wartość i naciskam klawisz "c" wybrana wartość w tabeli powinna się zmienić, tak też się dzieje ale po tej czynności każda inna wybierana wartośc (np. 3 pole w tabeli map = { 0, 0, 0, } ) też przybiera wartość tej zmienianej, jeśli wartość drugą ustawię na 2 i ją zaakceptuję klawiszem "c" i "przesunę się" na pole 3 wtedy je wyświetli też jako 2, jeśli jej nie zaakceptuję nie pozostanie 2-dwójką aczkolwiek program powinien wyświetlić 0 (wartość która jest w danej chwili w tabeli).
I druga kwestia taka jeśli zmienię wszystkie 3 pola w tabeli na 2, i zacznę zmieniać wartość przypisywaną im, zmienia się wartość wszystkich, a według kodu który napisałem (wydaje mi się że właśnie tak mój program działa) dla każdej pętli powinien osobno definiować wartość. Zresztą zobaczcie sami :)
(Jest to tylko fragment całego kodu, ale myślę że powinien wystarczyć)
function map_draw()
local i = 0
local v = 1
for y = 1, mapHeight do
for x = 1, mapWidth do
i = i+1
value[i] = 1
for k = 1, k do
for v = 1, v do
if valuenew == 1 then
value2[v] = selvalue
value[tilex[k]] = value2[v]
end
end
end
gfx.print(value[i], (x-1)*32 + 32/3, (y-1)*32 + 32/3)
gfx.setColor(255,0,0)
--gfx.print((i), (x-1)*32 + 32/3, (y-1)*32 + 32/3)
gfx.setColor(255,255,255)
gfx.rectangle("line", (x-1)*32, (y-1)*32, 32, 32 )
end
end
if phase[2] == 1 then
tilex[k] = hor
gfx.setColor(255,0,0)
gfx.rectangle("line", (tilex[k]-1)*32, (tiley[1]-1)*32, 32, 32 )
gfx.setColor(255,255,255)
end
end
function map_update(dt)
local clicked = false
local p = 1
local v = 1
repeat
p=p+1
v=v+1
if love.keyboard.isDown('c') and clicked == false then
k = k + 1
value2[v] = selvalue
tilex[k] = hor
valuenew = 1
clicked = true
end
if love.keyboard.isDown('c') and clicked == true then
clicked = false
end
until p == 999
if mapWidth <= 1 then
mapWidth = 1
end
if mapHeight <= 1 then
mapHeight = 1
end
end
Problem leży gdzieś pomiędzy repeat
w update(dt)
, a funkcją for k = 1, k do, niestety po paru dniach prób do niczego sensownego nie doszedłem, tak też zwracam się tu, może wy powiecie mi gdzie popełniłem błąd.
dodanie znacznika <code class="lua"> - furious programming