Recherche…
Introduction
Le PICO-8 est une console fantastique programmée en Lua intégré. Il a déjà une bonne documentation . Utilisez cette rubrique pour illustrer les fonctionnalités non documentées ou sous-documentées.
Boucle de jeu
Il est tout à fait possible d'utiliser PICO-8 en tant que shell interactif , mais vous souhaiterez probablement puiser dans la boucle du jeu. Pour ce faire, vous devez créer au moins une de ces fonctions de rappel:
-
_update()
-
_update60()
(après la v0.1.8 ) -
_draw()
Un "jeu" minimal peut simplement dessiner quelque chose à l'écran:
function _draw()
cls()
print("a winner is you")
end
Si vous définissez _update60()
, la boucle du jeu tente de fonctionner à 60 images par seconde et ignore update()
(qui tourne à 30 images par seconde). La fonction de mise à jour est appelée avant _draw()
. Si le système détecte des images perdues, il ignore la fonction de dessin toutes les deux images, il est donc préférable de conserver la logique du jeu et les entrées du lecteur dans la fonction de mise à jour:
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 fonction _init()
est, à proprement parler, facultative car les commandes extérieures à toute fonction sont exécutées au démarrage. Mais c'est un moyen pratique de réinitialiser le jeu aux conditions initiales sans redémarrer la cartouche:
if (btn(4)) _init()
Entrée de la souris
Bien que ce ne soit pas officiellement supporté, vous pouvez utiliser la souris dans vos jeux:
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
Modes de jeu
Si vous voulez un écran de titre ou un écran de fin de partie, envisagez de configurer un mécanisme de changement de mode:
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