Suche…
Einführung
Der PICO-8 ist eine in Embedded Lua programmierte Fantasy-Konsole. Es hat bereits eine gute Dokumentation . Verwenden Sie dieses Thema, um undokumentierte oder nicht dokumentierte Funktionen zu veranschaulichen.
Spielschleife
Es ist durchaus möglich, PICO-8 als interaktive Shell zu verwenden , aber Sie möchten wahrscheinlich in die Spielschleife einsteigen. Dazu müssen Sie mindestens eine dieser Rückruffunktionen erstellen:
-
_update()
-
_update60()
(nach v0.1.8 ) -
_draw()
Ein minimales "Spiel" zeichnet einfach etwas auf dem Bildschirm:
function _draw()
cls()
print("a winner is you")
end
Wenn Sie _update60()
definieren, versucht die Spieleschleife, mit 60fps auszuführen, und ignoriert update()
(das mit 30fps läuft). _draw()
Aktualisierungsfunktionen werden vor _draw()
aufgerufen. Wenn das System heruntergefallene Frames erkennt, wird die Draw-Funktion bei jedem zweiten Frame übersprungen. Aus diesem Grund sollten Sie die Spielelogik und die Spielereingaben in der Aktualisierungsfunktion beibehalten.
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
Die Funktion _init()
ist streng genommen optional, da Befehle außerhalb einer Funktion beim Start ausgeführt werden. Es ist jedoch eine praktische Möglichkeit, das Spiel auf die Anfangsbedingungen zurückzusetzen, ohne die Patrone neu zu starten:
if (btn(4)) _init()
Mauseingabe
Obwohl es nicht offiziell unterstützt wird, können Sie die Mauseingabe in Ihren Spielen verwenden:
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
Spielmodi
Wenn Sie einen Titelbildschirm oder einen Endspielbildschirm wünschen, sollten Sie einen Moduswechselmechanismus einrichten:
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