Zoeken…
Invoering
De PICO-8 is een fantasy-console geprogrammeerd in embedded Lua. Het heeft al goede documentatie . Gebruik dit onderwerp om ongedocumenteerde of ondergedocumenteerde functies te demonstreren.
Game loop
Het is heel goed mogelijk om PICO-8 als een interactieve shell te gebruiken , maar je wilt waarschijnlijk gebruikmaken van de gamelus. Om dit te doen, moet u ten minste een van deze callback-functies maken:
-
_update()
-
_update60()
(na v0.1.8 ) -
_draw()
Een minimale "game" kan eenvoudig iets op het scherm tekenen:
function _draw()
cls()
print("a winner is you")
end
Als u _update60()
definieert, probeert de _update60()
te draaien op 60 fps en wordt update()
(die op 30 fps draait) genegeerd. Beide updatefuncties worden aangeroepen vóór _draw()
. Als het systeem gevallen frames detecteert, slaat het de tekenfunctie om het andere frame over, dus het is het beste om de spellogica en spelerinvoer in de updatefunctie te houden:
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
De functie _init()
is strikt genomen optioneel omdat opdrachten buiten een functie bij het opstarten worden uitgevoerd. Maar het is een handige manier om het spel terug te zetten naar de beginvoorwaarden zonder de cartridge opnieuw op te starten:
if (btn(4)) _init()
Muisinvoer
Hoewel het niet officieel wordt ondersteund, kun je muisinvoer gebruiken in je games:
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
Spelmodi
Als u een titelscherm of een eindspelscherm wilt, kunt u overwegen een modusschakelmechanisme in te stellen:
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