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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow