Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2011-01-06

改行改ページをつけるよ!

| 01:13

【せんせい】

 今日は、前のメッセージ表示に、改行と、改ページの機能をつけようと思います!

【でし】

 ・・・長い長いブランクを感じさせず、実にさらっと、ものすごく自然に復帰しましたね(汗)

【せんせい】

 宇宙旅行へも行こうかと言う時代、1年や2年など瞬きするの出来事ですよ。

【でし】

 はやぶさが無事帰還したとはいえ、宇宙旅行はまだ無理でしょう;

 って言うかむしろ、竜宮城で遊びほうけていてふと気がついたら浦島太郎状態・・・

【せんせい】

 300年も過ぎ去っていなくて、幸いでした(笑)

 さて、気を取り直して改行改ページですよ!

 ちなみに、改行とは、文字の表示をいったん止めて、画面を変えずにまた続きを表示することです。

 やってるような、ノベルゲーム系では、あんまり必要じゃないもしないですが、画面全体に文字を表示するサウンドノベル系では、必須となりますね

 改ページは、前やったように、まで表示した文字を消して、新しいメッセージを表示することです。

【でし】

 改ページは、もともと実装されてたじゃないですか?

【せんせい】

 現状のままでは、一行ごとに勝手に改ページが行われてしまいますが、は、通常は連続して表示し、指示があった場合だけ、改ページを行うように改造するのが目的です。

 単に、改行改ページっていっても、シナリオを解析して、処理を振り分けるという、一番重要かもしない部分の基本となるところを作っていくわけですから、甘く見てはいけません!


 まず、メッセージ.csvの中身を、以下のように変更。

 二次配列の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に戻して改ページの処理を自動で行うようにすれば良いんでしょうけれども・・・

 のところこれは仕様と言うことにして、シナリオのほうで気をつけて違わないようにしましょうw

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20110106