2017年10月18日水曜日

メモ:Lua

 Luaでテトリス作ってる。電光掲示板の低レイヤAPIが必用なのでPCだと動かないけど、文法チェックはPCのLuaインタラプタでもできる。シリアルポートで転送するとハンドシェイク作ってないので遅いし、転送後だとエラーメッセージがわかりづらいので、PCで文法チェックできるのは便利。

 Cだと当たり前な文法ができないのがつらい。特にインクリメントができないのが厳しい。

 変数のswapとかは楽。a, b = b, aでswapできる。あとはx, y = -y, xで回転できたりするのが便利。

 Cだとa = +1みたいな文法は問題ない。でもLuaでは不可。Cだとa = +-+-+1という書き方はエラー無しで通ってしまう(+--+のような、マイナス記号の連続はエラー)。
 ちなみにa = +-+-+1はa=1となります。+記号は連結に使われて、「符号を反転しない」という動作。マイナス記号は符号を反転させるので、反転が3回で正数になる。

 forループはCと違いちょっと独特。for i = 1, 5 do end だと for (i = 1; i <= 5; i += 1) { } みたいな動作。for i = 1, 5, 2 do end だと for (i = 1; i <= 5; i += 2) { } みたいな動作。for i = 5, 1 do end では1回も回らないが、for i = 5, 1, -1 do endで増加方向を指定すれば for (i = 5; i >= 1; i -= 1) { } のような動作となる。


 Luaは結構面白い。特にコルーチンは便利。もっといろんな便利な使い方がありそう。
 ヒープ領域が85Kほどあるので、メモリには余裕ありそう。どれくらい使ってるか見積もりができないので、実はもう余裕ないのかもしれないけど。
 テトリスはニコニコに有る1時間プログラミングのアルゴリズムをそのままコピーしてる。コピーしてるだけなのに動画よりはるかに時間かかってるわけだが。。

 ロータリーエンコーダはあんまり性能が出ないので使わない方向。たまに他のキーに誤認するので、使うならそのあたりの対策をしてから。

0 件のコメント:

コメントを投稿