サーチ…


前書き

PICO-8は、組み込み型Luaでプログラムされたファンタジーコンソールです。それはすでに良い文書を持っています 。このトピックを使用して、文書化されていないか、または文書化されていない機能を実演してください。

ゲームループ

PICO-8をインタラクティブシェルとして使用することは完全に可能ですが、おそらくゲームループを利用したいと考えています。これを行うには、これらのコールバック関数の少なくとも1つを作成する必要があります。

  • _update()
  • _update60()v0.1.8以降)
  • _draw()

最小限の「ゲーム」は単に画面上に何かを描くかもしれません:

function _draw()
  cls()
  print("a winner is you")
end

_update60()を定義すると、ゲームループは60fpsで実行しようとし、 update() (30fpsで実行されますupdate()は無視されます。どちらの更新関数も_draw()前に_draw()ます。システムがドロップされたフレームを検出した場合、それは他のフレームごとに描画関数をスキップしますので、更新関数でゲームロジックとプレーヤ入力を保持することをお勧めします:

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

厳密に言うと、 _init()関数は任意の関数の外部にあるコマンドが起動時に実行されるため、オプションです。しかし、それはカートリッジを再起動せずにゲームを初期状態にリセットする便利な方法です:

if (btn(4)) _init()

マウス入力

正式にはサポートされていませんが、ゲームでマウス入力を使用できます:

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

ゲームモード

タイトル画面または終了ゲーム画面が必要な場合は、モード切り替えメカニズムを設定することを検討してください。

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
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow