gameloopの動作を理解するためのサンプル

概要

"gameloopは50ms毎の割り込み処理"ということを実際に目で見るための簡単なサンプルです。
mainとshakeとgameloopには同じ処理を入れていますが、実行するとmは一度だけ加算され1で終了し、sは端末を振ったときだけ加算するのに対し、gは何もしなくても加算され続けます。

gameloopが有効になるのはmainが終了してアイドル状態になってからで、gameloop自体が多重コールされることもないようです。

"//"で始まるコメント行は入力する必要ありません。

data

変数名 種別 初期値 説明
m NUM 0 main用
g NUM 0 gameloop用
s NUM 0 shake用

actions

  • action main()
    • // 初期化
    • data → m := 0
    • data → g := 0
    • data → s := 0
    • // mainのテスト処理
    • // data → mが10未満なら処理実行
    • if data → m < 10 then
      • // data → mに1を足す
      • data → m := data → m + 1
      • // data → mを表示(concatは文字列を繋げるコマンド)
      • "m=" → concat(data → m → to string) → post to wall
    • else

events

  • event gameloop()
    • // gameloopのテスト処理
    • // data → gが10未満なら処理実行
    • if data → g < 10 then
      • // data → gに1を足す
      • data → g := data → g + 1
      • // data → gを表示
      • "g=" → concat(data → g → to string) → post to wall
    • else

  • event shake()
    • // shakeのテスト処理
    • // data → sが10未満なら処理実行
    • if data → s < 10 then
      • // data → sに1を足す
      • data → s := data → s + 1
      • // data → sを表示
      • "s=" → concat(data → s → to string) → post to wall
    • else
最終更新:2011年10月28日 06:04