1日の隙間時間を利用してウディタでもそもそ作ってる飛鷹です。
サンプルシステムのダメージ値表示コモンを見て、その力技っぷりに驚愕したので、ちょっと自分でダメージ値表示コモンを作ってみました。
サンプルシステム向けじゃないですが、汎用性の高く、使い勝手の近い仕様で。
そしたら案の定、コモンの行数が231行から45行に減りました。
コメントも頻繁に書いて。
1の位から1桁ずつ時間差でポップアップ表示し、10桁でも表示していけます。
多分、可読性も高いと思います。
というわけで、追記にてそのコモンの内容を公開。
コモンの内容自体もですが、ここに使ってるテクニックが何かの役に立てばと思います。
やはり、こういうものはスマートで使いやすいものの方がいいですよね?
ちなみに、表示はこんな感じになります(画面中央あたり)
コモンの仕様は、呼び出し時にセルフ0にダメージ表示位置(右端)のx座標、1に上端のy座標、2に使用するピクチャ番号の開始番号、3にダメージ値となってます。
また、ダメージ値が−の場合は回復として、システムDBの12番の1に指定されている色で表示します。
以下手書きでの写し
▼桁数制限無しのダメージ表示エフェクト▼ダメージの符号が+か−かを表すセルフ変数■変数操作:このコモンEvセルフ10 = 0 + 0▼ループ回数を記録する変数■変数操作:このコモンEvセルフ11 = 0 + 0■条件分岐(変数):【1】このコモンEvセルフ3が0と同じ【2】このコモンEvセルフ3が0未満
◇分岐:【1】[このコモンEvセルフ3が0と同じ]の場合↓|▼ゼロだったらそもそも表示する意味なし!|■イベント処理中断
|■
◇分岐:【2】[このコモンEvセルフ3が0未満]の場合↓|▼マイナスは回復となる|■変数操作:このコモンEvセルフ10 = 1 + 0|■変数操作:このコモンEvセルフ3 = 0 ‐ このコモンEvセルフ3|■
◇分岐終了◇◇▼ここから表示の処理に移る■ループ開始
|▼最も下の桁の数字を切り出し|■変数操作:このコモンEvセルフ20 = このコモンEvセルフ3 % 10|▼ピクチャ番号計算|■変数操作:このコモンEvセルフ30 = このコモンEvセルフ2 + このコモンEvセルフ11|▼x座標計算|■変数操作:このコモンEvセルフ31 = このコモンEvセルフ0 + 0|■変数操作:このコモンEvセルフ31 -= このコモンEvセルフ11 * 12|▼描画処理へ|▼表示ディレイ量を計算|■変数操作:このコモンEvセルフ32 = このコモンEvセルフ11 * 2|■ピクチャ表示:このコモンEvセルフ30 文字列[\font[1]\f[24]\c[\cself[10]]\cself[20]] X:このコモンEvセルフ31 Y:このコモンEvセルフ1 0(このコモンEvセルフ32)フレーム|■ピクチャ移動:このコモンEvセルフ30 相対X:0 Y:-14 4(このコモンEvセルフ32)|▼文字を下げる準備|■変数操作:このコモンEvセルフ32 += 7 + 0|■ピクチャ移動:このコモンEvセルフ30 相対X:0 Y:14 4(このコモンEvセルフ32)|▼次の桁を表示するための準備|■変数操作:このコモンEvセルフ3 /= 10 + 0|■変数操作:このコモンEvセルフ11 += 1 + 0|■条件分岐(変数):【1】このコモンEvセルフ3が0以下
|◇分岐:[このコモンEvセルフ3が0以下]の場合↓||▼次の桁が無い場合、ループ終了||■ループ中断
||■
|◇分岐終了◇◇|■
◇ループここまで◇◇■ピクチャ消去:このコモンEvセルフ2 〜 このコモンEvセルフ30 4(45)フレーム■
と、こんな感じに45行となってます。
転用は自由にどうぞ。
こういう風にアルゴリズムを組むのは割と得意なんだけど、面白いシステムのアイディアがなぁ……(^^;というのが現在の悩み。
一応、組もうとしている戦闘システムはあるんで、それは自力で組みますが、そのうちアイディア募集するかも……?