- 2005-11-29 (Tue) 23:18
- プログラミング
BulletMLでそれなりに多くの弾幕がかけるわけだけど,ループ(リピート)のカウンタ値が取れなかったり if がなかったりとややこしいことをしようと思うと少々困る.ループカウンタがないのは再帰を使えば何とかなるが,この場合終了条件での分岐が出来ない.n 回再帰したら終了みたいなコードをかけないと,フラクタル的な弾幕がうまくかけないので困る.ということで,少々アホな知恵を絞り,ある弾の生存期間を再帰関数の再帰期間とするようにする.具体的には,ある弾の action で action を再帰させ,再帰を終了したいときには changeSpeed の speed 設定で弾の速度をとても大きくし,フレームアウトさせて弾の処理をとめてやる.カウンタパラメータ $1 が 0 のときに再帰をとめるには,speed に 0.001/($1+0.0000001) とでも書いておけばいいと.
とりあえず,この仕組みを使ってパーフェクトフリーズもどきを再帰で書いてみた.アホだ...
- Newer: AWK - はじめ