メルマガ:あゆしゃのC言語プログラミング
タイトル:あゆしゃのC言語プログラミング(Vol.520) UMLの状態遷移図でGIBS 4  2004/11/12


/*========================================================*/
    <<<あゆしゃのC言語プログラミング>>>
/*========================================================*/
 第520回 UMLの状態遷移図でGIBS 4
 発行    2004年11月12日(金曜日)
 発行数   約2600

{magclick}
/*========================================================*/
 はじめに ( 決り文句 )
/*========================================================*/
・このメールマガジンは、主にまぐまぐさんから発行しています。
・ジャンルは、マルチメディアのプログラム、C言語です。
・横60文字で作成し、インデントは大抵半角スペース4つです。
・ここで扱うプログラムは、C言語と半光年以内のものです。
・登録解除は、メルマガのホームページでお願いします。
・過去ログはバックナンバー(下欄参照)を活用して下さい。
・内容は私が感じたもので、最新の技術も、へたれもあります。
・わかりやすさを優先させる為、たまに嘘があるかもしれません。
・セキュリティ突破のため、暗号化された単語があります。

/*========================================================*/
 ご挨拶
/*========================================================*/

 こんにちは。あゆしゃです。

 ハードディスクを使いたいがため、何気なくはじめたFFX。

★ブリッツボールやりまくりです。

 そのときふと、気がつきました。

 画面左端に「テクニック」と出てきたとき、○ボタンを押すと、
その技がラーニングできます。

★へー、知らなかった。。。!

 普通にプレイしていて、ブリッツボールはルカ戦しかやっていま
せんでしたから。新鮮な驚きがいっぱいです。

{magclick}
/*========================================================*/
 今回のお題  << UMLの状態遷移図でGIBS 4 >>
/*========================================================*/

 というわけで、GIBSのソースをCode2Htmlを通してページに
まとめ、アップしました。

 その周辺のページも、すこしコーディネイトしました。

プログラムの世界
http://ayusya.hp.infoseek.co.jp/AboutProgram.html

あゆしゃのCGI一覧
http://ayusya.hp.infoseek.co.jp/AboutCGI.html

GIBS戦術プログラム
http://ayusya.hp.infoseek.co.jp/Perl_GIBS_sample1.html

/*========================================================*/

 前のほうと後のほうは、私のもやもやとした思惑なので、
気にしないでください。

 真ん中辺りにある「ラウンドループ」が戦術ターンを処理する
ループになります。

 その中でユニットのループとサイド(プレイヤーの先行・後攻)
ループがあり、

 ループの中の冒頭ではデータを読み込むなどの煩雑な処理が
あり、

 さらにその後に、状態遷移図で示した処理が続きます。

 状態遷移図の流れが、「なんとな〜く」プログラミングされて
います。

/*========================================================*/

 「SHIP」や「NORMAL」といった、状態遷移図で示した状態の
名前をコメントでちまちまと入れているので、ソースはやや大きい
ですが、追っかけやすいかと思います。

 $log は、そのときの処理を記録して、後でユーザが見るための
テキストです。

 このテキストは「MSBS」っぽいものにしようと考えています。

/*========================================================*/

 状態の保持は、ビット単位で行っています。

 よって、状態の判定は、ビットの論理積、

 状態の設定は、ビットの論理和、

 状態の消去は、ビットの全反転論理積で行っています。

 状態を値で持ってしまうと、状態がネストしたときに変数管理が
チンプンカンプンになってしまう恐れがありますので、ビットの
ほうがお手軽なはずです。

 ビットならば、複雑なネストも怖くありません。

 状態もそれほど数があるわけではありませんので、数値型1個の
変数で賄(まかな)えます。

 状態遷移を行うとき、論理演算を逐一書くのは面倒、もとい、
記号の記述ミスが怖いので、CHG_STATE という関数で一括して
行っています。

 C言語ならば、ビット変数を使用することにより、論理演算を
行う必要がなく、設定の変更も0と1を代入するだけなので、
もっと楽に記述できるはずです。

/*========================================================*/

 各状態の最後のほうに、「INITIALIZIE」という状態があり
ます。

 状態の中にいくつかの小さな状態がある形のとき、

 どれかの小さな状態が「ON」であってほしいのですが、

 それらの小さな状態がすべて「OFF」である場合、

 その大きな状態に初めて遷移してきたものとして、

 状態のコンストラクタとしての処理を記述しています。

 逆に、デストラクタの処理を記述する場合は、

 この例では使用していませんが、

if( state & state_alpha ) {
    if( state & state_a ) {
        CHG_STATE( state_alpha, state_omega );
    }
    else if( state & state_b ) {
    }
    else {
        // INITIALIZE
        state |= state_a;
    }
    if( ! ( state & state_alpha ) ) {
        // DESTRUCTOR
    }
}

 このように、最後で「現在の状態ではなくなった」ことを判定
すると、

 小さな状態の、どこかわからないけどきっとどこかで遷移したの
だろうなー、ということを判断することができるので、

 この場所にデストラクタのような、状態が終わってしまうときの
処理を記述すればオーケーです。

 どこにいくつあるか分からない状態遷移処理とペアで書くのは、
きっと面倒です。

{magclick}
/*========================================================*/
 さいごに
/*========================================================*/

 今後の予定です。あくまでも予定です。

 大型計算機「LC」の仕上げとシェアウェア登録

 グラフィックエディッタ「あいすドロワ」の作成
 ファイル比較ツール「あいすでふ」の作成
 C言語解析ツール「しーますた」の作成

{magclick}
/*========================================================*/
 次回予告
/*========================================================*/

 次回は11月15日(月曜日)に、第521回をお送りします。
 お題は「Code2Html改造案」

 Code2Html にいくつかの機能を追加したいです。

 お楽しみに!

/*========================================================*/
 最後の決り文句
/*========================================================*/
 このメールマガジンは、まぐまぐさんから発行しています。
 このメールマガジンを解除したい場合は、まぐまぐさんをご利用
ください。このメルマガのまぐまぐアイディーは最後にあります。
 このメールマガジンには広告が挿入されていますか?
 このメールマガジンの内容に文面の引用はありませんか?
 めーらっくすの場合はめーらっくすの利用方に従ってください。
 このメールマガジンの内容の、転用、流用、宣伝、リンク、
金天ボ なんて大歓迎です。

{magclick}
/*========================================================*/
 
/*========================================================*/

発行者 あゆしゃ

ホームページ::あゆしゃの世界
http://ayusya.hp.infoseek.co.jp/

ご意見・ご感想・ご質問メール
mailto:ayusya@flamenco.plala.or.jp

まぐまぐ::アイディー
0000020674

まぐまぐ::登録と解除
http://www.mag2.com/m/0000020674.htm

まぐまぐ::バックナンバー
http://jazz.tegami.com/backnumber/frame.cgi?id=0000020674

めーらっくす::アイディー
MM3E1AEE285AB4F

めーらっくす::登録と解除
http://www.mailux.com/mm_dsp.php?mm_id=MM3E1AEE285AB4F 

めーらっくす::バックナンバー★最近のものならこちらが便利★
http://www.mailux.com/mm_bno_list.php?mm_id=MM3E1AEE285AB4F

ブラウザの閉じるボタンで閉じてください。