Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines
(1 edit)

Formatted source. Note there are 3 ‘extra’ newlines, so this could have been 555 characters:

a=math b=240 c=138 d=120 e=69 f=0 g=0 h=0 i=.5 j=.2 k=.5
function l()m=d n=e o=0 p=0 q=0 r=0 end
l()
function TIC()t=a.sin(a.rad(f))u=-a.cos(a.rad(f))m=m+o n=n+p q=q+i r=r+j
if btnp(4)then m=d+t*9 n=e+u*9 o=t*2 p=u*2 end
if btn(2)then f=f-4 end
if btn(3)then f=f+4 end
cls()circ(d,e,7,8)print("*",(q-6)%b,(r-4)%c,6,true,2)circ(q%b,r%c,2,6)
if pix(m%b,n%c)==6 then g=g+1 k=k*1.2 i=k*t j=k*u l()end
print("SCORE "..g.." HI "..h,9,0)pix(m%b,n%c,15)line(d,e,d+t*9,e+u*9,15)
if a.abs(q%b-d)<9 and a.abs(r%c-e)<9 then h=g>h and g or h g=0 k=.5 i=.5 j=.2 l()end
end

And this is what it looks like with friendlier variables, spacing, and comments:

-- for extra manual minifying
m=math
screenwidth=240
screenheight=138
middlex=120
middley=69

-- starting turrent angle
angle=0

score=0
highscore=0
edx=.5
edy=.2
espeed=.5

function resetmovers()
-- init bullet x, y, dx, and dy (velocity)
    bx=middlex
    by=middley
    dx=0
    dy=0
    -- init enemy
    ex=0
    ey=0
end

resetmovers()

function TIC()
    x=m.sin(m.rad(angle))
    -- negating Y because screen coords
    --   and I want starting position up
    --   and 0 is shorter than 180
    --   only saving 1 char, though
    y=-m.cos(m.rad(angle))
    bx=bx+dx
    by=by+dy
    ex=ex+edx
    ey=ey+edy
    if btnp(4) then
        -- pew pew
        bx=middlex+x*9
        by=middley+y*9
        dx=x*2
        dy=y*2
    end
    if btn(2) then
        angle=angle-4
    end
    if btn(3) then
        angle=angle+4
    end
    cls()
    -- cell
    circ(middlex,middley,7,8)
    -- enemy
    print("*", (ex-6)%screenwidth, (ey-4)%screenheight, 6, true, 2)
    circ(ex%screenwidth,ey%screenheight,2,6)
    -- bullet hit detect
    if pix(bx%screenwidth,by%screenheight) == 6 then
        score = score + 1
        -- -- reset enemy
        espeed=espeed*1.2
        edx=espeed*x
        edy=espeed*y
        resetmovers()
    end
    -- score
    print("SCORE "..score.." HI "..highscore,9,0)
    -- bullet
    pix(bx%screenwidth,by%screenheight,15)
    -- turret
    line(middlex,middley,middlex+x*9,middley+y*9,15)
    if m.abs(ex%screenwidth-middlex)<9 and m.abs(ey%screenheight-middley)<9 then
        -- game over! man. game over!
        highscore = score > highscore and score or highscore
        score=0
        espeed=.5
        edx=.5
        edy=.2
        resetmovers()
    end
end

Edit: I could probably save some more characters by using radians instead of degrees. I meant to do that, but that was very early in the dev process and I forgot about it.