diff --git a/autobrake_test.p8 b/autobrake_test.p8 index 083bbea..39dc680 100644 --- a/autobrake_test.p8 +++ b/autobrake_test.p8 @@ -40,11 +40,97 @@ function mknew(tt, more) end end -function init() +function _init() + pal(1,129,1) + the_ship = ship.new() + slomo = 0 + sloc = 0 + reroll() +end + +function reroll() + the_ship:reroll() end function _update60() + if (btnp(4)) reroll() + slomo += btnp(2) and -1 or btnp(3) and 1 or 0 + slomo = (slomo < 0) and 0 or (slomo > 60) and 60 or slomo + sloc += 1 + if sloc > slomo then + the_ship:update() + sloc=0 + end end function _draw() + cls(1) + the_ship:draw() end + +-->8 +-- ship + +ship = { + maxspd=4, + thrust=0.25, + drag=0.0625, + y=32, +} +mknew(ship) + +function ship:reroll() + self.x=rnd(128) + self.dx=rnd(2*self.maxspd)-self.maxspd +end + +function ship:draw() + if self.x < -7 then + spr(2, 0, self.y-7) + spr(2, 0, self.y+8) + elseif self.x > 127 then + spr(2, 120, self.y-7, 1, 1, true) + spr(2, 120, self.y+8, 1, 1, true) + else + spr(1,self.x,self.y) + end +end + +function ship:update() + local t = btn(0) and -1 or btn(1) and 1 or 0 + t *= self.thrust + t = constrain(self, t) + local s,lim=self.dx+t,self.maxspd + local sg = sgn(s) + s -= sg*self.drag + if (sgn(s) != sg) s=0 + if (abs(s)>lim) s=sg*lim + + self.x += s + self.dx = s + self:add_sparks(t) +end + +function ship:add_sparks(t) +end + +-->8 +-- constraints + +function constrain(s, want) + return want +end + +-->8 +-- fx + +-- todo: spark ring buffer + +__gfx__ +00000000800000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000006666000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000067777600800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000675555758008888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000675000750800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000067777500080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000005555000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000