I've started doing something in Pico-8, but when i am trying to follow the particle tutorial from Picozine 1 (even if i get the text correct) and run it i get an error like 
This is the code: http://hastebin.com/akaqebefav.lua
Any help?
on line 40 you have
s.dx = (rnd(.8).4) |
maybe it should be
s.dx = (rnd(.8) - .4) |
i'm not sure what the intention of that line is so i'm just guessing
Here it is.
pico-8 cartridge // http://www.pico-8.com
version 5
__lua__
--super wheelbot!!
--by dynamicill
function _init()
level=2
px=10
py=104
pstate=0
pspr=0
pdir=0
pat=0
pdied=false
smoke={}
cursorx=50
cursory=50
color=7
if level==1 then
px=10
py=104
end
end
function canfall()
--get the map tile under the player
v=mget(flr((px+4)/8),flr((py+8)/8))
--see if it's flagged as wall
return not fget(v,0)
end
function change_state(s)
pstate=s
pat=0
end
function make_smoke(x,y,init_size,col)
local s = {}
s.x=x
s.y=y
s.col=col
s.width = init_size
s.width_final = init_size + rnd(3)+1
s.t=0
s.max_t = 30+rnd(10)
s.dx = (rnd(.8) - .4)
s.dy = rnd(.05)
s.ddy = .02
add(smoke,s)
return s
end
function move_smoke(sp)
if (sp.t > sp.max_t) then
del(smoke,sp)
end
if (sp.t > sp.max_t15) then
sp.width +=1
sp.width = min(sp.width,sp.width_final)
end
sp.x = sp.x + sp.dx
sp.y = sp.y + sp.dy
sp.dy= sp.dy+ sp.ddy
sp.t = sp.t + 1
end
function draw_smoke(s)
circfill(s.x,s.y,s.width,s.col)
end
function _update()
if pdied==false then
b0=btn(0) --button0 state
b1=btn(1) --button1 state
b2=btn(2) --button2 state
px=(px+128)%128 --no bounds left and right
pat+=1
--idle state
if pstate==0 then
pspr=0
if (b0 or b1) change_state(1)
if (b2) change_state(3)
if (canfall()) change_state(2)
end
--walk state
if pstate==1 then
if (b0) pdir=-1 sfx(0)
if (b1) pdir=1 sfx(0)
px+=pdir*min(pat,2)
pspr=flr(pat/2)%2
if (not(b0 or b1)) sfx(1) change_state(0)
if (b2) change_state(3)
if (canfall()) change_state(2)
end
--fall state
if pstate==2 then
pspr=32
sfx(2)
if (canfall()) then
if (b0)px-=1 --steer left
if (b1)px+=1 --steer right
py+=min(4,pat) --move the player
if (not canfall()) py=flr(py/8)*8 --check ground contact
else
py=flr(py/8)*8 --fix position when we hit ground
change_state(0)
end
end
end
--jump state
if pstate==3 then
pspr=1
py-=6-pat
if (b0) px-=2
if (b1) px+=2
if (not b2 or pat>7) change_state(0)
end
--player death
if py>=134 then
if pdied==false then
sfx(3)
pdied=true
end
end
foreach(smoke, move_smoke)
if btn(0,0) then cursorx=1 end
if btn(1,0) then cursorx+=1 end
if btn(2,0) then cursory-=1 end
if btn(3,0) then cursory+=1 end
if btn(4,0) then color = flr(rand(16)) end
make_smoke(cursorx,cursory,rnd(4),color)
end
end
function _draw()
--draw the world
map(0,0,0,0,16,16)
--draw the player
spr(pspr,px,py,1,1,pdir==-1)
--draw smoke
foreach(smoke,draw_smoke)
end
|
Looks like you have an extra "end" at the end of this block:
foreach(smoke, move_smoke)
if btn(0,0) then cursorx=1 end
if btn(1,0) then cursorx+=1 end
if btn(2,0) then cursory-=1 end
if btn(3,0) then cursory+=1 end
if btn(4,0) then color = flr(rand(16)) end
make_smoke(cursorx,cursory,rnd(4),color)
end
end
Aw shot! didn't notice that, but then next i have another problem:
What i could tell is that the tutorial was made before some bugs were fixed in this version. :|
if (sp.t > sp.max_t15) then |
should be something like
if (sp.t > sp.max_t - 15) then |
here's code that runs: https://transfer.sh/ZksND/smoke.p8
though it doesn't look like it should, so there'll be a few more things to fix in there
thanks, this worked out, the picozine had grammatical errors sometimes, :P
Also, do anyone know how to make the player bump from the ceiling of the block and aswell how to do single-screen levels?
Yes, but it won't be of any use to you. Do you understand what the program from picozine does and how it works? There is no point in just typing in the source code. I recommend starting with something very very simple, like a pixel moved by arrow keys. Can you do that?
Yeah. Seems simple. i'm doing a platformer based off the tutorial from Picozine 2
Hey Dynamicill, if it helps here's a template I put together for making platformer games. I tried to comment it helpfully; it's an adaptation of this one: https://www.lexaloffle.com/bbs/?tid=2119. I copied it out manually to really get familiar with it.
Oop, here it is, I think this time.
Once having copied it out, I made the necessary changes where I saw fit. I aimed for it to be reasonably customisable, but it was intended for personal use so may be a bit of a hassle to reuse, best of luck regardless!
[Please log in to post a comment]





