Luaでメニュー選択ルーチンを作ってみました

Windows_3

Luaの文法をまだ覚えていないので、日本語マニュアル見ながら手探りでコード書いてます^^;
関数に引数やローカル変数が使えるのって便利ですね〜
再帰アルゴリズムも簡単に書けそうです^^

function printf(...) print(string.format(unpack(arg))) end

function menu_test( items, num )
  local n=1,i,j
  for i=0,200 do
    --
    if GetAsyncKeyState( VK_ESCAPE )~=0 then 
      PlaySound("data\\cancel2.wav")
      return -1
    end
    if GetAsyncKeyState( VK_SPACE )~=0 then
      PlaySound("data\\decide2.wav")
      return n
    end
    if GetAsyncKeyState( VK_UP )~=0 then
      if n>1 then n=n-1
        PlaySound( "data\\cursor7.wav" )
      end
    end
    if GetAsyncKeyState( VK_DOWN )~=0 then
      if n>" )
    for j=1,num do
      DrawString( 16,j*16, items[j] )
    end
    Flip()
    Sleep(100)
  end
  return 0
end

使い方の例

do
  menu_items = { "menu item 1", "menu item 2", "menu item 3", "menu item 4", "menu item 5" }
  menu_num = 5
  printf( menu_test( menu_items, menu_num ) )
end

</pp>っていうのは無視して下さい。

あとは、LuaShift_JIS化パッチを当てなければ…