■ 新・ゲーム開発講座 |
■ へっぽこプログラミング入門♪ |
■第36夜:コメント文 「コメントくらいなんだ〜」と言う方もいるかもしれませんが、スクリプトもちょっと込み入ったものを書き始めると、途端に構造把握ができにくくなって来るものです。やはり、一言二言コメントが挿入できるようにしておくのは必要なことなんですよね。プログラム的に見たコメント文は、単にテキストを無視するだけの動作なので実装もらくちんです。 |
【サンプルスクリプト:彼女と触手の素敵な関係より】 #mov rika_x,250 ##利香表示位置X #disp_date VRAM,20,20,BGRAM03,@MONTH,@DAY,午前
##日付 #interval_anime_on VRAM,paku_x,paku_y,BGRAM02,150,0,60,50,y,6,50,5000 |
■書式 そんな訳で、コメントの書式です。面倒なので「長野旅行記」「彼女と触手〜」と同じ仕様にします。アセンブラの
REM や C++ の // と同様の1行コメントですが、実用上これで充分でしょう。
■実装 今回の講座で開発しているシステムでは、コマンド識別子として #
を使っています。## をコメントとして使用することで、実はコメント文もコマンドの変形バージョンとして実装が可能です。通常のコマンドがスペース区切りの独立した単語になるのと違い
#############・・・・などの表記も許容したいので、コマンド解析を担当するTextEngine.cpp
の Command_call() で、単純な文字列比較ではなく #
が2回続いたら行末まで飛ばすようにしてしまいましょう。そんな訳で、今回はコマンド用の関数は作らず、Command_call()
の内部に少々手を加えるだけで済ませてしまいます。なんと↓たったこれだけ(爆笑) |
void Command_call() {
} |
あれれ、if 文の *(TEXT+1)=='#' は分かるけど *(TEXT-1)=='#' って何だ?・・・という方・・・鋭いです。実はこれ、お恥ずかしながらバグ対策だったりするのです(大爆死 ^0^;)。コマンドパラメータ解析関数の最後でテキストポインタを+1していることが原因で、コマンド行でスペースまたはTABを1個だけ挟んでコメントが続いた場合、最初の # が読み飛ばされてしまう場合があるんです(超大汗 ^^;)。そんな訳で、とりあえず前後1バイトを調べて # が連続していたら・・・という判定方式になっています。ちょっとカッコ悪いですね・・・反省 m(_ _)m とゆーことで、ソースはこちらに置いておきますので動作確認などしてみて下さい。実質4行の追加程度でわざわざフルセットでダウンロードできるあたり、我ながら粋狂なことなど思いますが・・・まあ気にしない、気にしない(笑)。次回からは、もうちょっと真面目にやりますのでご勘弁願います(をい ^0^;) |