游戏循环
完全可以将 PICO-8 用作交互式 shell ,但你可能想要进入游戏循环。为此,你必须至少创建一个这些回调函数:
_update()
_update60()
( v0.1.8 之后 )_draw()
最小的游戏可能只是在屏幕上画出一些东西:
function _draw()
cls()
print("a winner is you")
end
如果定义 _update60()
,则游戏循环尝试以 60fps 运行并忽略 update()
(以 30fps 运行)。在 _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()