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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow