̬̬̬̈̬̬̬̬̈̬̬̬̬̬̪쬪̬̬̬̪쬪 > ;"/"//""//"""/""""""""""b&""""""""""f"f&""""""/"/""""""""/""/"/"/"""""""""bf&ff&bf"ff"bf&fb&f""""""/"//"""""""""/"/""""""""f&"b&"fb&f"&f&""bfb""""""////"""""""""/"//"""""""""""f&b&"f&"f"&"f&fb&b""""""/"/"///""/"""/""/"""""""ff""f&bf"ff"ff"f"f&""""""""""""""""""""""""""""""""""""""""""""""""""""""f"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -- title: MAZE ESCAPE -- author: you -- desc: find the exit! -- script: lua -- === КАРТА (стены = тайл 1, пол = 0, выход = 2) === -- Нарисована прямо в коде, не нужен Map Editor W=1 _=0 E=2 MAP={ {W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W}, {W,_,_,_,W,_,_,_,_,W,_,_,_,_,_,W}, {W,_,W,_,W,_,W,W,_,W,_,W,W,W,_,W}, {W,_,W,_,_,_,W,_,_,_,_,W,_,_,_,W}, {W,_,W,W,W,W,W,_,W,W,W,W,_,W,W,W}, {W,_,_,_,_,_,_,_,W,_,_,_,_,_,_,W}, {W,W,W,_,W,W,W,W,W,_,W,W,W,W,_,W}, {W,_,_,_,W,_,_,_,_,_,_,_,W,_,_,W}, {W,_,W,W,W,_,W,W,W,W,W,_,W,_,W,W}, {W,_,_,_,_,_,W,_,_,_,W,_,_,_,W,W}, {W,W,W,W,_,W,W,_,W,_,W,W,W,_,_,W}, {W,_,_,_,_,_,_,_,W,_,_,_,_,_,_,W}, {W,_,W,W,W,W,_,W,W,W,W,W,W,W,_,W}, {W,_,_,_,W,_,_,_,_,_,_,_,W,_,_,W}, {W,W,W,_,W,_,W,W,W,W,W,_,W,_,E,W}, {W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W}, } TW=8 -- размер тайла в пикселях MX=16 -- ширина карты MY=16 -- высота карты -- === ИГРОК === px=1*TW+2 -- стартовая позиция X (в пикселях) py=1*TW+2 -- стартовая позиция Y spd=1 -- скорость -- === СОСТОЯНИЕ === won=false steps=0 t=0 -- === ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ === function tile(x,y) local tx=math.floor(x/TW) local ty=math.floor(y/TW) if tx<0 or ty<0 or tx>=MX or ty>=MY then return W end return MAP[ty+1][tx+1] end function canmove(x,y,w,h) return tile(x,y)~=W and tile(x+w,y)~=W and tile(x,y+h)~=W and tile(x+w,y+h)~=W end function checkexit(x,y) local tx=math.floor((x+3)/TW) local ty=math.floor((y+3)/TW) if tx<0 or ty<0 or tx>=MX or ty>=MY then return false end return MAP[ty+1][tx+1]==E end -- === ГЛАВНЫЙ ЦИКЛ === function TIC() t=t+1 if not won then -- движение local nx,ny=px,py if btn(0) then ny=py-spd end if btn(1) then ny=py+spd end if btn(2) then nx=px-spd end if btn(3) then nx=px+spd end if nx~=px then if canmove(nx,py,5,5) then px=nx; steps=steps+1 end end if ny~=py then if canmove(px,ny,5,5) then py=ny; steps=steps+1 end end -- проверка победы if checkexit(px,py) then won=true sfx(0,"C5",30,0,15) -- победный звук end end -- === РЕНДЕР === cls(0) -- рисуем карту for y=0,MY-1 do for x=0,MX-1 do local tile=MAP[y+1][x+1] if tile==W then -- стена: синий прямоугольник с тёмным верхом rect(x*TW,y*TW,TW,TW,2) rect(x*TW,y*TW,TW,2,1) elseif tile==E then -- выход: мигающий жёлтый local c=12 if t%30<15 then c=14 end rect(x*TW,y*TW,TW,TW,c) print("!",x*TW+2,y*TW+1,0) end end end -- игрок: зелёный квадратик с глазом rect(px,py,6,6,11) pix(px+4,py+1,0) -- глаз -- UI print("MAZE ESCAPE",2,2,15) print("steps:"..steps,80,2,6) if won then -- экран победы rectb(30,55,80,20,15) rect(31,56,78,18,0) print("YOU WIN!",50,60,14) print("steps:"..steps,44,67,6) end end