Nesses últimos dias a notícia de falecimento do criador do Pascal me fez lembrar dos joguinhos que criava quando dava meus primeiros passos na programação.
Perdi todos eles, que estavam em algum HD que foi formatado. Já tentei encontrar mas sem sucesso. 😢
Entre os jogos que eu tinha feito para aprender a programar, eu gostava muito do Jogo da Cobrinha, aquele que vinha nos celulares Nokia, que ficaram bem populares no Brasil no início dos anos 2000.
Dessa vez usei PICO-8 ao invés de Pascal.
Para jogar:
https://lucasmncastro.itch.io/snake
Se você quiser hackear o jogo, pode copiar o código abaixo e colar no https://www.pico-8-edu.com/.
function _init() w=5 -- largura do pedaco l=5 -- comprimento inicial x=0+w -- posicao x y=0+w -- posicao y dir=1 -- direcao: l,r,u,d t1=0 -- tempo d1=5 -- razao para velocidade fg=5 bg=11 apple=nil -- comida head=nil -- cabeca game_over=false list={} -- pedacos da cobra -- inicializa a cobra for i=0,l-1 do add(list,{x=x+i*w,y=y}) end -- ajusta a posicao x inicial x=x+((#list-1)*w) end function hit_body(_x,_y) for b in all(list) do -- cabeca nao bate nela mesma if b!=head then if #list>1 and _x==b.x and _y==b.y then return true end end end return false end function _update() if game_over then if btnp(4) or btnp(4) then _init() end else if (btnp(0) and 0!=avoid) dir=0 if (btnp(1) and 1!=avoid) dir=1 if (btnp(2) and 2!=avoid) dir=2 if (btnp(3) and 3!=avoid) dir=3 t1+=1 if t1%d1==0 then if (dir==0) then x=x-w; avoid=1 end if (dir==1) then x=x+w; avoid=0 end if (dir==2) then y=y-w; avoid=3 end if (dir==3) then y=y+w; avoid=2 end -- pega a comida if apple and apple.x==x and apple.y==y then apple=nil ?"\a1c2d2e2" else deli(list,1) end add(list,{x=x,y=y}) head=list[#list] -- game over if x<0 or y<0 or x>124 or y>124 or hit_body(x,y) then game_over=true ?"\a1e2d2c2c2c2c2" end -- nova comida if not(apple) then local ax=flr(rnd((128-w)/w))*w local ay=flr(rnd((128-w)/w))*w apple={x=ax,y=ay} -- evita a comida no corpo for i in all(list) do if apple and i.x==apple.x and i.y==apple.y then apple=nil break end end end end end end function _draw() if game_over then local txt= "game over!" t1+=1 if t1%d1 == 0 then print(txt,64-#txt/2*4,60,bg) else print(txt,64-#txt/2*4,60,fg) end else cls(bg) rect(1,1,126,126,fg) for i in all(list) do rectfill(i.x+1,i.y+1,i.x+w,i.y+w,fg) end if apple then circ(apple.x+3,apple.y+3,1,fg) end end end
Gostou? Me fala aí.