游戏循环

完全可以将 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()