状態遷移は表のディレクトリ構造である。
ゲームプログラミングを始めて、ステップ処理に嫌気がさした頃、どうにかしてコーディング量を抑え、バグの特定やキャラクターの動作の状態遷移のトレースがしやすいかと言う事を自問自答していたときに見つけたのがタスク処理だった。
しかし、このタスク処理・・・、実際に書いてみるとステップ処理を関数毎に分けただけで状況によってはステップ処理の記述の仕方の方がコード片が散乱しなくて分かりやすいというジレンマを生んでいた。
また、タスク処理を行うに当って1タスクの中にステップ処理を記述するとまたステップ処理部分をタスク化する必要が出てくるくらいのコード量になってしまい堂堂巡りになってしまう事が少なからずあった。*1
よってタスクの中に新たなタスクマネージャーを置き、云々かんぬん・・・というコードを書くことになるのだが
この力技・・・。まったくスマートではないのだ。面倒なのだ。ソフトウェアを作るに当ってこれだけの状態遷移が必要であったとしてもコード上では一切管理はしたくないのだ。
FSMをC言語などの手続き型言語のソースコードに置き換えると特に見難い。参照しにくい。編集しにくい!!!
よって、FSMのコードジェネレーターやDKFSM構想(妄想)をして頭の中でこねくり回していた。
今更ながら、よくよく考えてみると状態遷移に関しては状態遷移表として伝統的な図示の方法があるのだから、この事例の現象と照らし合わせてみると状態遷移表はディレクトリ構造ではないか?という事に気付いた。
状態遷移の中に新たな状態遷移が現れた時は状態遷移表の一つのセルの中に次の状態遷移表へのリンクが出来てその中の状態遷移表に従うといった形では・・・と考えた。
おそらく、既にそのような形でプログラミングしている方々はいると思う。もしくはそのような形にせざるおえないような気もしなくも無い。
図示にいたってはどうすればよいのか・・・と悶々としていた中、ちょっと希望が見えてきた。
追記:そういえばKlick&Playも状態遷移表のようなイベントエディタが付属していた。そのセルをクリックするとダイアログが現れてイベントを設定できるといった形。既に理想は実現されているものですね。
*1:ステップ処理やタスク処理に関する事の詳細は後日この日記に書く予定です。
Regex Tips / RubyをHTMLに変換するRuby Script
Powered by dKingyo Windows Server | Perl | Java | Graphic Gems | HTML
Rubyの正規表現勉強がてらにruby2html.rbを作ってみた。
via Ruby Magic―Rubyで極める正規表現
処理はかなりいい加減であるので理解願いたい。
続きを読む
tag map file parser in C++ by using dkutil
Powered by dKingyo VB2005 | ポケットリファレンス | 図解 辞典 | AJAX | TurboGears
と言う事で、dkutilを使って簡易パーサー書きました。
続きを読むXMLやiniファイルに満足できない方の為のファイル形式
Powered by dKingyo Visual C++ | Visual Basic | C++ | アルゴリズム | Access
XML形式で書くとデータ部に<>などのタグに使う要素を宣言できない。
そのための代替えとして
&lt や &gtを書いていられるわけがない。
よってini形式にしようかとおもったのだがこれもこれで不都合が生じる。
とあるように一行しかコンテンツを書くところがない。
[Contents]
Contents="コンテンツ"
改行を入れてデータを編集する時に見やすくしたいのだ!!!
データを編集する時はもちろん慣れているテキストエディタがよいので各種DB用フロントエンドなんぞはつかっていられない。
よってこれらの不都合に対応するようなファイル形式が必要だ。
で、思いついたの以下のような形式
<CONTENTS> <font size=5>今日のプログラミング</font> <b>ああ、また今日もバグってしまった。</b> もうC++じゃなくてC#にしよう。 その為にもC#用ネイティブコンパイラを作らなければ・・・ </CONTENTS>
CONTENTSがキーとなりCONTENTSタグに挟まれた内部がデータとなるような形式。
多重構造のタグは認めない形式。
こんな感じでどうだろうか?
私としては非常に満足なファイル形式なのだが・・・
WORDLIST2AMAZON d金魚の今更Ajax part5
Powered by dKingyo PHP | Java | FreeBSD | ソフトウェア開発技術者 | コンパイラ
みたいなのを簡単に出力できます。
Powered by dKingyo Access | PHP | Ruby | 図解 辞典 | 規格準拠
のように大きくする事も出来ます。
Ads by GoogleのAmazon版みたいなものです。Ads by Amazon!?って感じでしょうか?
これを使ってiframeやJavaScriptが使えないページで沢山アフィって下さい。
http://www.dkut.flnet.org/js/wordlist2amazon.html
QDBM4VC 投下!!!
http://www.dkut.flnet.org/result.html#qdbm
にQDBM for VCをアップしました。
QDBMをVCで使いやすくするためのラッパーライブラリです。
qdbm_helper.h qdbm_helper.cを自分のプロジェクトに入れて一緒にコンパイルすればQDBMのDLLを読み込むユーティリティとして使用できます。
サンプルはmain.cに書いています。
ChangeLog
- Villa Vista Odeum に対応
TODO
- 最新のQDBMに対応
- クラスライブラリも提供する
VC6 Tips / C++での独自のallocatorの作り方テクニック
C++での独自のnew deleteの作り方テクニックを見てあの面倒な規制をどうにかしたいと思っていた。
そんな時、STLはどのようにしてデストラクタ問題を解決していたのかと言う疑問が浮かんだ。
調べていくうちにアロケーターというキーワードに行き着いた。
std::vectorやstd::listのtemplateの第二引数を覚えているだろうか・・・
Aとか書いていたりAllocatorとか書いていたりする。
ここに自分で作ったallocatorを指定すると独自のポリシーを適用する事が出来る。
デフォルトではSTLで用意されたstd::allocator
なるほど。new deleteの機能をラップしたクラスとしてAllocatorを作ったと?
Allocatorの中身はC++の教科書には載っていないトリッキーな記述が目立ち非常に分かりに所や要点は随時コメントにて説明をするので我慢して見てほしい。
続きを読む