Ricerca…
introduzione
PICO-8 è una console di fantasia programmata in Lua incorporato. Ha già una buona documentazione . Utilizzare questo argomento per dimostrare funzionalità non documentate o sotto-documentate.
Ciclo di gioco
È possibile utilizzare PICO-8 come shell interattiva , ma probabilmente vorrai attingere al ciclo di gioco. Per fare ciò, è necessario creare almeno una di queste funzioni di callback:
-
_update()
-
_update60()
(dopo v0.1.8 ) -
_draw()
Un "gioco" minimo potrebbe semplicemente disegnare qualcosa sullo schermo:
function _draw()
cls()
print("a winner is you")
end
Se si definisce _update60()
, il ciclo di gioco tenta di eseguire a 60fps e ignora update()
(che viene eseguito a 30fps). Una funzione di aggiornamento viene chiamata prima di _draw()
. Se il sistema rileva fotogrammi persi, salterà la funzione di disegno ogni altro fotogramma, quindi è meglio mantenere la logica di gioco e l'input del giocatore nella funzione di aggiornamento:
function _init()
x = 63
y = 63
cls()
end
function _update()
local dx = 0 dy = 0
if (btn(0)) dx-=1
if (btn(1)) dx+=1
if (btn(2)) dy-=1
if (btn(3)) dy+=1
x+=dx
y+=dy
x%=128
y%=128
end
function _draw()
pset(x,y)
end
La funzione _init()
è, in senso stretto, opzionale in quanto i comandi esterni a qualsiasi funzione vengono eseguiti all'avvio. Ma è un modo pratico per ripristinare il gioco alle condizioni iniziali senza riavviare la cartuccia:
if (btn(4)) _init()
Input del mouse
Sebbene non sia ufficialmente supportato, puoi utilizzare l' input del mouse nei tuoi giochi:
function _update60()
x = stat(32)
y = stat(33)
if (x>0 and x<=128 and
y>0 and y<=128)
then
-- left button
if (band(stat(34),1)==1) then
ball_x=x
ball_y=y
end
end
-- right button
if (band(stat(34),2)==2) then
ball_c+=1
ball_c%=16
end
-- middle button
if (band(stat(34),4)==4) then
ball_r+=1
ball_r%=64
end
end
function _init()
ball_x=63
ball_y=63
ball_c=10
ball_r=1
end
function _draw()
cls()
print(stat(34),1,1)
circ(ball_x,ball_y,ball_r,ball_c)
pset(x,y,7) -- white
end
Modalità di gioco
Se si desidera una schermata del titolo o una schermata di fine partita, si consideri l'impostazione di un meccanismo di cambio modalità:
function _init()
mode = 1
end
function _update()
if (mode == 1) then
if (btnp(5)) mode = 2
elseif (mode == 2) then
if (btnp(5)) mode = 3
end
end
function _draw()
cls()
if (mode == 1) then
title()
elseif (mode == 2) then
print("press 'x' to win")
else
end_screen()
end
end
function title()
print("press 'x' to start game")
end
function end_screen()
print("a winner is you")
end