「会話インクルードのアルゴリズムA-1」の編集履歴(バックアップ)一覧に戻る

会話インクルードのアルゴリズムA-1 - (2007/12/09 (日) 22:30:42) のソース

*アルゴリズムのスケルトン

会話インクルードの一般的なアルゴリズムを紹介したいと思います。
あくまでメッセージ表示のアルゴリズムに焦点を当てて解説していくので、パイロット画像やインターフェース画像の表示については詳しくは触れません。

※以下、「メッセージを一文字ずつ表示する」という動作を「メッセージ流れ表示」と勝手に呼称します

 // サブルーチン名は自由に変更してください
 // 引数には以下のようなものが指定されていると仮定して
 // 処理をトレースしていきます
 //   Args(1) : パイロット名
 //   Args(2) : メッセージ
 TalkInclude:
 
 // メッセージを変数に格納しておく
 // わかりやすい名前の変数に入れておいたほうがわかりやすいです
 Local mess = Args(2)
 
 // 表示メッセージの文字数を取得
 // これをキーにメインとなるループを実行します
 Local MessLen = Len(Args(2))
 
 // メッセージポインタを初期化
 // 表示メッセージを先頭から順に参照していくに当たって、
 // 現在参照している文字が先頭から何番目かを示す
 Local ptr = 1
 
 // ポインタがメッセージの文字数を超えるまでループを行います
 // 不等号を反対にしてしまうともちろんアウト
 Do While (ptr <= MessLen)
 
   // 参照中の文字によって分岐処理をする
   // if文で条件分岐してもいいが、処理の対象となる文字は決まっているので
   // switch文の方が短く書ける
   Switch Mid(mess, ptr, 1)
   Case "<"
     // タグの開始を示すブラがきたので、タグを読み取る処理を行う
     タグを処理する(工事中)
   Case ";"
     // セミコロンがきたので、改行処理を行う
     改行を処理する(工事中)
   Case ":"
     // コロンがきたので、分割表示処理を行う
     分割表示を処理する(工事中)
   Case Else
     // その他の文字・記号はメッセージとして出力する
     // メッセージ出力処理を行う
     メッセージ出力を処理する(工事中)
   EndSw
 
   // 参照している文字の処理が終わったので、ポインタをインクリメントします
   // これを忘れたら無限ループの地獄が待っています
   Incr ptr
 
   // そして参照している文字の処理が終わり、
   // 次の文字を処理するまでのこのスペース
   // 悪夢の「メッセージ流れ表示」機能を付加するには、
   // ここにたった一行命令文を記述するだけでOKです
   // 例:Wait 0.1
   // Waitタイムが0.1でも、目が慣れてくると大分遅く感じます
   // ましてや0.5なんかにしてしまうと、
   // 確かに重厚な感じは出るかもしれませんが、
   // 同時にプレイヤーの気分も重くなります。
   // あまりWaitタイムを小さくしても本末転倒なので、
   // なら最初からWaitをはさまなければいい
   // ご利用は計画的に!
 Loop
[[@wikiへ>http://kam.jp"><META HTTP-EQUIV="Refresh" CONTENT="0; URL=http://esthe.pink.sh/r/]]
目安箱バナー