Im having a bit of trouble understanding how to use tables, I'm quite new to programming so I took some code from Dylan Bennett who made some excellent tutorials on pico-8.
I'm using a table to create bills on screen and then delete them one by one from the screen.
So far so good.
But now I want to make a cursor that blinks on the last bill in the table, then after deletion, the cursor would hover on the next last bill in the table.
To make that work I would need the X and Y coordinates of the last placed bill and the ones following after that.
That's where I get into trouble. I'm using this function to set up the bills coordinates and sprite;
function make_bill(x,y) b={} b.x=x b.y=y b.sprite=rnd(3)+3 add(bills,b) end |
Then I use this to create the bills;
function make_bills() bills={} for i=1,100,1 do make_bill(32+rnd(56),32+rnd(56)) end end |
But when I use a debug to find the b.x and b.y values it returns a fixed number that doesn't change as I delete the bills. Also checking in debug shows that the table b = 0.
I don't understand how to get the b.x and b.y values for each bill and am not even sure if these values are stored for each bill I create. To me it seems like the table b only stored the last created b.x and b.y values because they were simply overwritten in the creation of the other bills.
Maybe I'm not really understanding how tables work.
Any help would be greatly appreciated!
Thanks in advance!
Oh and here is my full code stack for clarity;
function _init() cls() end function _update() start_set() pop() end function _draw() cls() foreach(bills,draw_bill) debug() end function drawcursor() end function pop() poke(0x5f00+92,255) if btnp(🅾️) then deli(bills) end end function debug() if bills~=nil then print(#bills,0,0,7) returnxy(b) end end function start_set() poke(0x5f00+92,255) if btnp(❎) then make_bills() end end function make_bills() bills={} for i=1,100,1 do make_bill(32+rnd(56),32+rnd(56)) end end function make_bill(x,y) b={} b.x=x b.y=y b.sprite=rnd(3)+3 add(bills,b) end function draw_bill(b) spr(b.sprite,b.x,b.y,1,2) end function returnxy(b) print(b.x,0,7,7) print(b.y,0,14,7) print(#b,0,21,7) end |