-- corridor crawl -- by quadtrip games px=0 py=0 ps=1 tx=64 ty=94 yf=2 pr={x=0,y=0,w=0,h=0} _a=0 _b=0 _c=0 _d=false _e=0 _f=0.1 pg=2 _g=10 _h=0.1 _i=10 _j=0 pt=0 _k=5 _l=0 _m=0 _n=10 _o=14 _p=0 _q={} _r=0.5 _s=0 _t={} gs=0 function _u(a,c,l,r) c,l,r=c or function(a,b) return ay1)x0,x1=x1,x0 y0,y1=y1,y0 if(y1>y2)x1,x2=x2,x1 y1,y2=y2,y1 if(y0>y1)x0,x1=x1,x0 y0,y1=y1,y0 local d0,d1,d2=y1-y0,y2-y0,y2-y1 for y=flr(y0),y2 do local a,b=y<=y1 and(d0==0 and x1 or x0+(x1-x0)*(y-y0)/d0)or(d2==0 and x1 or x1+(x2-x1)*(y-y1)/d2),d1==0 and x2 or x0+(x2-x0)*(y-y0)/d1 rectfill(a,y,b,y,c) end end function _x(x1,y1,x2,y2) return sqrt((x2-x1)^2 + (y2-y1)^2) end function r(x,y,w,h,rr,c,c2,_y) _y=_y or 1 rrect(x,y,w,h,rr,c) rrectfill(x+2,y+2,((w*_y)-4),h-4,rr-2,c2) end _0={ "♥♥♥", "hi!", "☉☉☉", "😐😐😐", "mew", "🐱🐱🐱", "♪♪♪", "⌂웃⌂", "★★★", "⧗▤✽", "❎❎❎", "●●●", "que", "zap", "???", "▤▤▤", "◆◆◆" } function r2(x,y,w,h,rr,c,c2,_y,_1) r(x+2,y+2,w-4,h+4,rr,c,c2,_y) r(x,y,w,h,rr,c,c2,_y) local _2=_0[_1] for i=0,#_2-1 do local cw=print(_2[i+1],0,-99) local ch=8 if i*ch < h-12 and w > cw+6 then print ("\f2\^o1ff" .._2[i+1],x+w/2-cw/2,y+i*ch+((#_2*ch/2)/2)) end end end _3=0 function _drawtitle() cls(0) pal(7,1) local aa=1-t() if aa < -1 then aa=-1 _3=_3 - t()*2 if _3 < -512 then gs=1 sfx(5,3) end end local _4=aa if (aa < 0) then _4=0 end local xo=cos(t()*32)*_4*32 local yo=12-_3 spr(0,0,yo,16,4) spr(64,xo,16+yo,16,4) spr(64,xo,56+yo,16,1) spr(0,0,58+yo,16,4) spr(0,0,58+16+yo,16,4) spr(0,0,58+32+yo,16,4) end function _draw() if (gs==0) then _drawtitle() end if (gs==1 or gs==2 or gs==3) then _drawgame() if (gs==2) then pal(1,t()*3%3) pal(0,(1+t()*3)%3) print ("\f0\^w\^t\^o1ffgame over",30,19) if (_c > 90) then print ("\f0\^w\^t\^o1ff❎+🅾️ restart",14,32) end pal(1,1) pal(0,0) sfx(-1,2) _j=0 _l=0 _m=0 print("\^o1c0quadtrip games / visy",22,128-6,3) _c=_c + 1 if (btn(4) and btn(5)) and _c > 100 then reload() run() end end end end function _update60() if (gs==0) then return end if (gs==2) then return end if gs==3 then if _d then py=py + 1.2 if py > 35 then py=35 gs=2 clip() end end return end if btn(0) then px=px - ps end if btn(1) then px=px + ps end if btn(4) then _j=1 else _j=0 end if px < -32 then px=-32 _l=_n sfx(0) end if px > 32 then px=32 _m=_n sfx(0) end if _j==1 then _g=_g - _h if _g < 0 then _g=0 end if _g > 0 then pt=pt + _f sfx(1,2) end if _g==0 then sfx(-1,2) end if pt > _k then pt=_k end else sfx(-1,2) pt=pt - _f _g=_g + _h/2 if _g > _i then _g=_i end if pt < 0 then pt=0 end end if (_g==0 and pt > 0) then pt=pt - _f if pt < 0 then pt=0 end end py=py - pt py=py + pg if py > 0 then py=0 end if py < -64 then py=-64 end pr={ x=tx+px-1, y=flr(py/yf+ty)+9, w=2, h=2 } if (_l > 0) then _l=_l - 1 px=px + (_l)*0.3 end if (_m > 0) then _m=_m - 1 px=px - (_m)*0.3 end local _aa=15 local _ab=450 local _ac=0.85 _ad=_aa + (_ab - _aa) * (_ac ^ _o) _p=_p + 1 if _p > _ad then _p=0 _ax() end if gs==1 then _8() _9() end end function _5(_6,_7) return _6.x < _7.x+_7.w and _6.x+_6.w > _7.x and _6.y < _7.y+_7.h and _6.y+_6.h > _7.y end function _8() _ae={} for i=1,#_q do _q[i].x=_q[i].x + (_q[i]._a0*0.35) _q[i].y=_q[i].y + _r if _q[i].y > 128 then add(_ae,i) end local sc=(_q[i].y-60)*0.03 if sc > 1 then sc=1 end _q[i]._am=sc*3 _q[i]._an=sc*_q[i]._a1 _q[i]._ao=(16*_q[i]._o)*sc _q[i]._ap=_q[i].x-(sc*3) _q[i]._aq=_q[i].x-(sc*3)+_q[i]._an _q[i]._ar=_q[i].y-8 _q[i]._as=_q[i].y-8+_q[i]._ao if _q[i]._as > 118 then _q[i]._at={ x=_q[i]._ap, y=_q[i]._ar+2, w=_q[i]._an-2, h=_q[i]._ao-2 } if (_5(pr,_q[i]._at)) then gs=2 _d=false _e=64 _c=0 sfx(2) end end end for i=1,#_ae do deli(_q,_ae[i]) end end function _9() local _ae={} for i=1,#_t do _t[i]._au=_t[i]._au + _r * 0.5 if _t[i]._au > 32 then add(_ae,i) end local p=_t[i] local _af=p._au if _af >=0 and _af <=32 then local _ag=64 + 2 * _af local _ah=58 - _af * 1.5 local _ai=70 + _af * 1.5 local _aj=_ai - _ah local _ak=_aj / 3 local _aw,_al=_ah,_aj if p.type=="third" then if p._av=="left" then _aw=_ah _al=_ak elseif p._av=="center" then _aw=_ah + _ak _al=_ak elseif p._av=="right" then _aw=_ah + _ak * 2 _al=_ak end end local _ay={ x=_aw, y=_ag, w=_al, h=4 } if py >=-1 and _5(pr,_ay) then _d=true _c=0 gs=3 _a=px _b=py sfx(3) end end end for i=1,#_ae do deli(_t,_ae[i]) end end function _ax() local _az=flr(rnd(4)-2) local ob={ x=64+_az, y=60, _a0=sgn(_az), _a1=rnd(_o+8)+4, _o=1+rnd(2), _1=1+flr(rnd(#_0-1)) } if (ob.x > 63 and ob.x < 65) then ob._a0=0 end add(_q,ob) _s=_s + 1 if _s > 5*(_o*0.5) then _o=_o + 1 sfx(4) _s=0 end if rnd(1) < 0.4 then local _a2=rnd(2) < 1 and"full" or"third" local _a3="center" if _a2=="third" then local _a4=rnd(3) if _a4 < 1 then _a3="left" elseif _a4 < 2 then _a3="center" else _a3="right" end end add(_t,{ _au=0, type=_a2, _av=_a3 }) end end function _a5(r) end function _a6(_a7,_a8) if (#_a7==_a8) return _a7 return"0" .._a6(_a7,_a8-1) end local tt=0 function _drawgame() cls(0) if (gs < 2) then tt=t() end pal(1,136,1) pal(2,8) pal(3,14) local tw=32 local th=16 local count=16 local _a9=48 local _ba=2 local _bb={} local lt=tt for i=1,count do local z=(i * (_a9 / count) + lt * _ba) % _a9 add(_bb,z) end for i=1,#_bb do for j=i + 1,#_bb do if _bb[i] < _bb[j] then local _bc=_bb[i] _bb[i]=_bb[j] _bb[j]=_bc end end end local _bd=px/4 clip(16,0,128-32,128) for i=1,#_bb do local z=_bb[i] local _be=0 + flr((z / _a9) * 24) % 3 r(65 - tw / 2 * z,64 - th / 2 * z,tw * z,th * z,16-z*3,_be,_be+1) end local _bf=0 local _bg=0 if (_l > 0) then _bf=_l*0.5 end if (_m > 0) then _bg=_m*0.5 end clip(16,0,48,128) for i=18,38,4 do r(i-1,67+32-i,5,32,_l,_bf,0,1) end clip(128-48,0,32,128) for i=36,14,-4 do r(122-i,65+32-i,5,32,_m,_bg,0,1) end clip() local ft=0 if gs==1 then ft=tt end for i=0,32 do clip(58-i*1.5,64+2*i,58+12+i*1.5,128) rectfill(58-i*1.5,64+2*i,58+12+i*1.5,64+2*i+4,(1+i-ft*_o)%3) end for p in all(_t) do local i=p._au if i >=0 and i <=32 then local _ag=64 + 2 * i local _ah=58 - i * 1.5 local _ai=70 + i * 1.5 local _aj=_ai - _ah local _ak=_aj / 3 if p.type=="full" then clip(_ah,_ag,_ai - _ah + 1,5) rectfill(_ah,_ag,_ai,_ag + 4,0) else if p._av=="left" then clip(_ah,_ag,_ak + 1,5) rectfill(_ah,_ag,_ah + _ak,_ag + 4,0) elseif p._av=="center" then clip(_ah + _ak,_ag,_ak + 1,5) rectfill(_ah + _ak,_ag,_ah + _ak * 2,_ag + 4,0) elseif p._av=="right" then clip(_ah + _ak * 2,_ag,_ak + 1,5) rectfill(_ah + _ak * 2,_ag,_ai,_ag + 4,0) end end end end clip() clip(16,0,128-32,128) _u(_q,_v) for i=1,#_q do r2(_q[i]._ap,_q[i]._ar,_q[i]._an,_q[i]._ao,1,0,_q[i]._am,1,_q[i]._1) if (_q[i]._at) then _a5(_q[i]._at) end end clip() local ts=16 if (_d) then clip(_a+tx-ts/2,flr(_b/yf+ty)-2,ts,14) end local is=3 local sk=-6+_x(px,0,64,0)*0.1 if _j==1 and _g > 0 then for i=0,8 do circfill(sk/2+px+tx+cos(i*.01)*4-3,py/yf+ty+16+i,rnd((16-i)/4),i%2) end end if (gs > 1) then sfx(-1,3) end if (_e >=0) then _w(px+tx+sk,flr(py/yf+ty),px+tx-ts/2,flr(py/yf+ty+ts),px+tx+ts/2,flr(py/yf+ty+ts),0) _w(px+tx+sk,flr(py/yf+ty)+is,px+tx-(ts-is)/2,flr(py/yf+ty+(ts-is/2)),px+tx+(ts-is)/2,flr(py/yf+ty+(ts-is/2)),2) end if _e >=0 and gs==2 then for i=0,32 do circfill(px+tx+rnd(8)-4,py/yf+ty+8+rnd(8)-4,rnd(8),i%3) end _e=_e - 1 end clip() rectfill(0,16,128,-32,0) rectfill(0,128-16,128,128+32,0) r(16,128-15,16+_i*8,8,3-cos(pt*0.1)*3,1,2,(_g/_i)) local _bh="corridor " .._a6("" ..flr(_o-14),2) print ("\f2\^w\^t\^o1ff" .._bh,20,5) _a5(pr) end pal(1,136,1) pal(2,8) pal(3,14) sfx(6)