スクリプト関連
luaとかSquirrelとかについて適当なことを書いてみる。
<< | 2024-12 | >> | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
2010-10-23
ATコマンドで数分ごとに、、その2
まさか、setコマンドで計算ができるとは思わなかった。
うーむ、昔からできたんだっけか?
てなことで、多少短くできた。
2010-10-22
ATコマンドで数分ごとに実行する
久しぶりにバッチファイルなんぞ書いたので、ネタにしてみる。
windowsにはATコマンドで決まった時間にコマンド等を実行することができるけど、時間単位とか数分単位に実行することはできない。(すべて登録してしまえばできるけど現実的じゃない。)
バッチファイルだけで、何とかしてみた。
2010-9-27
p-man level10-2
フルーツを適当に追加。
あとは、コーヒーブレイク位か。
動画でパックマン見たら、いろいろと違ってて笑える。
グーグルステージでも作るかなぁ。
p-man_lv10-2.zip(933)
2010-9-20
p-man level10-1
まだなんとか、飽きずに作ってます。
段階的学習の「パックマン風ゲームを作る」のレベル10相当です。
一部のサウンドにtssを使っています。
ドライバで使うmmlがtcpと違うことに気づくのにえらい時間食った。
p-man_lv10-1.zip(813)
未実装
・フルーツ
・コーヒーブレイク
・タイトル適当すぎ
バグ
・敵がたまに職場放棄する
・敵の動きがいまいち
・よく敵をすり抜ける
・めだま状態の時にパワーとるといじけになる
・bmpなので、縁が透けないのか?
・角を曲がる処理が適当
・点数が適当すぎ
・音が適当すぎ
などなど
2010-9-5
ピーマン
まともにゲームを作り上げたことが無いと常々思っていたんだけど。
つーか、まともなツールもエミュも作れて無いけど。
飽きっぽいから、軽く動くと満足しちゃうんだよなぁ。
最近、ふつふつと作りたい欲求がわいてきたので、でっち上げてみた。
2009-6-18
スロット名に2バイト文字 その2
スロットのシンタックスシュガー、ちゃんとマニュアルに載ってた。
どこ見てたんだろうなぁ。
そういえば、項目が見つからない場合、エラーになってしまう。
先にスロットの存在をチェックする必要がある。
if( "あい" in dic ){ print( dic["あい"][0] ); }else{ print( "ない" ); }
うーむ、なかなか面倒だな。luaだとnilを返してくれたんだけど。
それでもあとでチェックしなきゃいけないから同じか。
テーブルのコピー
テーブルのコピーをしようと、こんな記述をしたところ、
A <- { HOGE = 10, } B <- A B.HOGE = 20 print( "A:" + A.HOGE + " B:"+ B.HOGE + "\n" );
結果
A:20 B:20
なるほど、ポインタが渡されるだけで、AとBは同じデータを参照するようになるわけだ。
ではコピーはどうするのだと思って調べたところ、
C <- clone A;
と書かないといけないのね。
2009-6-14
スロット名に2バイト文字
いきなりだが、辞書を作ってみる。なにも考えないでこんな風になった。
dic <- [ { kana="あい",kanji=["愛","藍","相" ] } : : ]
これだと、forかforeachで検索しないといけない。
foreach( i in dic ){ if( i.kana=="あい" ){ print( i.kanji[0] ); } }
スロット名に日本語がつかえらいちいち検索する必要無くていいなぁと思って
dic <- { "あい" = ["愛","藍","相" ] ←エラー あい = ["愛","藍","相" ] ←エラー }
とか書いてみたけどダメでした。2バイト文字が変数として認識されないとダメってことかな。unicodeでリコンパイルしたらいけるのだろうか?
たしかどこかでダメだって読んだ気がするのでそのうち試すとして、squirrelのマニュアルには書いてないっぽいけど、luaと同様にテーブル(スロット)のシンタックスシュガーが用意されている。ちなみに日本語だと糖衣構文っていうらしい(wikipedia)。
こんな風に書くことが出来る。
dic <- {} dic["あい"] <- ["愛","藍","相" ]; dic["あう"] <- ["合う","会う" ]; print( dic["あい"][0] ); print( dic["あう"][1] );
これだと、初期処理で設定する必要があるので、いまいちといえばいまいち。辞書であれば別ファイルから読み込むのが普通だから問題ないけど、初期値として指定する方法は無いものかなぁ。
2009-6-12
dofile の位置に注意
dofileする位置によって、定義される場所が違うぞってことです。
以下の例の場合、inc1.nutで定義されるのは、aaaですが、inc2.nutで定義されるのは
test.aaaになります。気をつけないと、思わぬバグに遭遇する羽目になるので、注意しましょう。
2009-6-10
suquirrelのdofileでenum、const
早速だけど、小ネタ
squirrelで、ソース分割してdofileでインクルードっぽいことをするけど、enumとconstはダメなのね。dofileしたときにコンパイルされて値に置換されてしまうから当たり前といえば当たり前なんだろうけど。インクルードじゃないんだと頭に入れておかないといけないですな。enum、constは普通の変数とかテーブルとして定義するしかないのかなぁ。
inc.nut
enum KEYS { A = 0x0001 B = 0x0002 SELECT = 0x0004 START = 0x0008 RIGHT = 0x0010 LEFT = 0x0020 UP = 0x0040 DOWN = 0x0080 } const BG_MAIN = 0x6000000;
test.nut
dofile( "inc.nut" ); print( KEYS.A ); ←エラー print( BG_MAIN ); ←エラー
スクリプト関連
なぜかDSでスクリプトを結構かいているので、その時に気づいたことなんか書き留めておこうかと。まぁ、ネタの補強ってやつやね。