Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2011/01/29 (土)

背景を変更するよ!

| 17:24 | 背景を変更するよ! - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - 背景を変更するよ! - 雪乃☆雫のなでしこ日和 背景を変更するよ! - 雪乃☆雫のなでしこ日和 のブックマークコメント

【でし】

 復帰そうそう、サボり気味の毎日ですね。

【せんせい】

 仕方ありません;

 例年にない豪雪で、雪はねに追われてぐったりなのです~。

【でし】

 家に引きこもっているのに、弱っているのを言い訳に、ダラダラすごしているそうですw

【せんせい】

 (無視して)

 さて、今日は背景を変更したいと思います!

 ずっと同じ場所で話が進むってゲームはあまりありませんから、場所が移動すればそれに応じて背景が変わっていくのは、当然のことですよね。

 「背景,背景1.jpg」のよーな書式で、指定したファイルを背景に設定することにします。

 まず、メッセージ.csvをこんな感じに!

メッセージ,我輩はNAKOである。  
メッセージ,名前はまだない。
改ページ,
メッセージ,ここは百合が原公園。
改行,
メッセージ,死体発見現場ですw
改ページ,
背景,背景2.jpg
メッセージ,背景をへんこうしました。
改ページ,

 シナリオ解析関数の中に

    違えばもし、コマンドが「背景」ならば
      裏_背景の画像はシナリオ¥番号,1
      ADV画面合成
      番号=番号+1
      シナリオ解析

 を追加し、ADV画面合成という関数を作ります。

 背景を変えた後は、再度全部の画像を重ねあわせなおさないといけないからです。

*ADV画面合成
  裏_背景を表画面の0,0へ画像コピー。
  裏_立ち絵を表画面の0,0へ画像合成改。
  裏_テキストウィンドウの5,5,630,110を表画面のテキストウィンドウX,テキストウィンドウYへ50で画像部分透過コピー。
  表画面を保持用の0,0へ画像コピー

 これで、できたかな~? と思ったら・・・


【でし】

 あれれ~?

 テキストウィンドウが、緑色になっちゃいましたよ~?!

【せんせい】

 ううぅ・・・画像部分コピー関数の問題でした(泣)

●画像部分透過コピー({グループ=?}コピー元のX,Y,W,Hを{数値=$00FF00}透過色で{グループ=?}コピー先のX2,Y2へ{数値=50}透明度で)
  処理用をイメージとして作成。処理用の可視はオフ。
  処理用の幅はW。処理用の高さはH。

  #半透明にしたい部分を処理用に移す
  コピー元のX,Y,W,Hを処理用の0,0へ画像部分コピー

  #コピー元の半透明にしたい部分以外をコピー先へ合成
  塗り色は透過色。線色は透過色。線太さは0。
  コピー元のX,YからX+W,Y+Hへ四角。
  コピー元をX,Yでコピー先のX2,Y2へ画像合成改。
  
  #半透明にしたい部分を透過コピー
  処理用をコピー先のX+X2,Y+Y2へ透明度で画像半透明コピー
  
#  処理用→壊す。

 このような、内容でした。

 よくみたら、元画像(コピー元)に変更を加えてしまっています!

 こりゃ、緑色になるわけだ(汗)

 本当なら、元画像はいじらずに、別画面で処理を行うようにしたら良いと思いますが、面倒なので、ちょいと元に戻して終わらせるようにしました。

  #コピー元を元に戻す
  処理用をコピー元のX,Yへ画像コピー

 この一文を追加で解決!

 ちなみに、ナゾの「無効なポインタ操作」対策で、処理用→壊す。は、コメントにしてます。

 のところは、これで正常動作です。むむむ。

【でし】

 ところで、画面ですけど、ぱって変わっちゃいますけど、これじゃゲームっぽくないですよぅ。

 普通、場面が変わるときとか、なんかあるじゃないですか。

【せんせい】

 トランジョン(?)は、後し!

 簡単なのは、わりと簡単に実装できるはずですが・・・

【でし】

 先生にとっては、簡単じゃないってことですね?

【せんせい】

 しくしくしく・・・

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

2011/01/13 (木)

15パズルのバグを直すよ!

| 21:29 | 15パズルのバグを直すよ! - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - 15パズルのバグを直すよ! - 雪乃☆雫のなでしこ日和 15パズルのバグを直すよ! - 雪乃☆雫のなでしこ日和 のブックマークコメント

 突然ですけど、以前作った15パズルに、バグを発見したので、直しておきます。


 この部分です。

#-----成績リセット---------------------------------------------
*成績リセット
  ダイアログタイトルは「成績表リセット」
  「リセットしてもいい?」と二択。
    もしそれはいならば
      (表示順位数*2)
      成績¥回数
      を「成績表.txt」へ保存。
#-------------------------------------------------------------

> テキストをクリアするだけなら、保存すればいいだけだけど、それだと現在の成績表表示は変わらないので、成績配列の中身もにしないとね。


 なんて書いていながら、それが正常に機能してなかったことが判明なのです;

 ちゃんとテストもしてたつもりだったのに、なんでだ・・・(涙)


 というわけで、↓のように直しました。

#-----成績リセット---------------------------------------------
*成績リセット
  ダイアログタイトルは「成績表リセット」
  「リセットしてもいい?」と二択。
    もしそれはいならば
      (表示順位数*2)
        成績¥回数    #←ここです
      を「{母艦パス}成績表.txt」へ保存。
#-------------------------------------------------------------

 繰り返しの「」の中身がちゃんとインデントされていなかったのが問題でした。

 途中で、変にしてしまったのかも・・・




 さてさて、問題の15パズルのソースの全文は、こちら。

http://nadesiko.g.hatena.ne.jp/snowdrops89/20090401/1238587801

 該当の関数し替えたら、ばっちり動きます☆

chocochoco2011/01/28 20:45いつの間にか復帰してたのですね^^;
今日初めて気が付きました(笑)

また素敵な物語が続くのかと思うと、とても楽しみです。
これからも頑張って下さい。

私も自分のページ頑張らないと・・・。

雪乃☆雫雪乃☆雫2011/01/29 17:12>choco さま
そうなんです、いつの間にか・・・w
でも、ぼちぼちですけれどね。
復帰そうそう、こちらは大雪で雪かきに追われてぐったり(>_<)
プログラムどころじゃ、ありません;;;
ともあれ、素敵な物語?!?!と言えるかどうか分かりませんけれども、またゆるゆるとお付き合いくださいませ。

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

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