수색…
소개
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