수색…


소개

PICO-8은 임베디드 루아에서 프로그래밍 된 판타지 콘솔입니다. 이미 좋은 문서가 있습니다. 이 항목을 사용하여 문서화되지 않았거나 문서화되지 않은 기능을 입증하십시오.

게임 루프

PICO-8을 대화식 셸로 사용할 수 는 있지만 게임 루프를 활용하고 싶을 것입니다. 이를 수행하려면 다음 콜백 함수 중 하나 이상을 만들어야합니다.

  • _update()
  • _update60() ( v0.1.8 이후)
  • _draw()

최소한의 "게임"은 단순히 화면에 무언가를 그릴 수 있습니다.

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

_update60() 을 정의하면 게임 루프가 60fps에서 실행되고 update() (30fps에서 실행 됨 update() 무시 update() . 업데이트 함수는 _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