2011-01-06
改行改ページをつけるよ!
【せんせい】
今日は、前回のメッセージ表示に、改行と、改ページの機能をつけようと思います!
【でし】
・・・長い長いブランクを感じさせず、実にさらっと、ものすごく自然に復帰しましたね(汗)
【せんせい】
宇宙旅行へも行こうかと言う時代、1年や2年など瞬きする間の出来事ですよ。
【でし】
はやぶさが無事帰還したとはいえ、宇宙旅行はまだ無理でしょう;
って言うかむしろ、竜宮城で遊びほうけていてふと気がついたら浦島太郎状態・・・
【せんせい】
300年も過ぎ去っていなくて、幸いでした(笑)
さて、気を取り直して改行改ページですよ!
ちなみに、改行とは、文字の表示をいったん止めて、画面を変えずにまた続きを表示することです。
今やってるような、ノベルゲーム系では、あんまり必要じゃないかもしれないですが、画面全体に文字を表示するサウンドノベル系では、必須となりますね
改ページは、前回やったように、今まで表示した文字を消して、新しいメッセージを表示することです。
【でし】
改ページは、もともと実装されてたじゃないですか?
【せんせい】
現状のままでは、一行ごとに勝手に改ページが行われてしまいますが、今回は、通常は連続して表示し、指示があった場合だけ、改ページを行うように改造するのが目的です。
単に、改行改ページっていっても、シナリオを解析して、処理を振り分けるという、一番重要かもしれない部分の基本となるところを作っていくわけですから、甘く見てはいけません!
二次配列の0番の要素で、命令を判断していくことにしますよ。
メッセージ,我輩はNAKOである。 メッセージ,名前はまだない。 改行, メッセージ, (え;) 改ページ, メッセージ,みぃ・・・・
そして、コードです。
表画面のマウス押した時は~ もし、改ページ待機=オンならば もし、表画面の押されたボタン=左ならば もし、コマンドが「改ページ」ならば テキストウィンドウクリア。 シナリオ解析 違えば 戻る 違えば 戻る #-----シナリオ開く------------------------------------------- 「メッセージ.csv」を開く。 シナリオはそれ シナリオ行数はシナリオの要素数。 シナリオ解析 #------------------------------------------------------------ #------------------------------------------------------------ *シナリオ解析 改ページ待機=オフ。 コマンドはシナリオ¥番号,0 もし、番号>シナリオ行数ならば 「おわり」と言う。 終了。 違えば、 もし、コマンドが「メッセージ」ならば シナリオ¥番号,1を「メッセージ」の文字高さ取得*行数へメッセージ表示。 行数=行数+1 #行数カウント 番号=番号+1 シナリオ解析 違えば、もし、コマンドが「改行」ならば 点滅カーソル 番号=番号+1 違えば、もし、コマンドが「改ページ」ならば 点滅カーソル 行数=0 番号=番号+1 違えば 番号=番号+1 シナリオ解析 #------------------------------------------------------------ #-----メッセージ表示----------------------------------------- *メッセージ表示(Sを{数値=0}Yへ) 表画面のテキストウィンドウX+10,テキストウィンドウY+10+YへSを100でノベルテキスト描画。 #------------------------------------------------------------
【でし】
出来ました!
「メッセージ」コマンドが連続している間は、処理を止めずに次々に次の行を表示、「改行」コマンドがあると、マウスクリックを待って次の行を表示、「改ページ」コマンドがあると、マウスクリックを待って現在表示されているメッセージが消えて、次のメッセージが1行目から表示されます。
【せんせい】
そのとーりです。
問題のシナリオ解析ですが、単にもし~違えば、もし、で条件分岐をしていってるだけです。
この先命令が増えても、ここに追加していくだけです。実に簡単でしたね☆
あと、ここに載ってない変更点としては、前回次のメッセージを表示できるようにしたときに、ノベルテキスト描画関数の中から、カーソル点滅を呼び出させていたのですが、それは外に出しました。
でないと、一行表示したら、強制的にピカピカしちゃいますからね!
今回、改行できるようにしたことで、メッセージの表示位置を一行づつ下げていく処理が必要になります。
これを怠ると、おんなじ場所にどんどん文字が重なってしまうということになります。
改ページのときには、0に戻すのを忘れず!
【でし】
せんせい!
もし、改ページを挟まずにメッセージを続けたら、どうなりますか?!
【せんせい】
いい質問ですね~。
試しにやってみるのが、早いでしょう。
メッセージ,我輩はNAKOである。 メッセージ,名前はまだない。 メッセージ, (え;) メッセージ,みぃ・・・・
【でし】
あっ、4行目がっ・・・
【せんせい】
今回は、はみ出しの処理を行っていませんから、改ページをはさまずにどんどんメッセージを表示してしまうと、テキストウィンドウから溢れて変なところに文字が表示されるようになってしまいます。と言うか、すぐに画面外になってしまって、5行目以降は全く表示されないですね。
たぶん、ウィンドウに収まる範囲内で行数を何行までと指定し、それ以上になったら0に戻して改ページの処理を自動で行うようにすれば良いんでしょうけれども・・・