「会話インクルードのアルゴリズム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
*アルゴリズムのスケルトン
会話インクルードの一般的なアルゴリズムを紹介したいと思います。
あくまでメッセージ表示のアルゴリズムに焦点を当てて解説していくので、パイロット画像やインターフェース画像の表示については詳しくは触れません。
※以下、「メッセージを一文字ずつ表示する」という動作を「メッセージ流れ表示」と勝手に呼称します
// サブルーチン名は自由に変更してください
// 引数には以下のようなものが指定されていると仮定して
// 処理をトレースしていきます
// 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/]]
表示オプション
横に並べて表示:
変化行の前後のみ表示: