Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2009-09-25

次のメッセージを表示するよ!

| 19:58

【せんせい】

 さてさて、それっぽい画面を表示して音楽まで流れるよーになりました!

【でし】

 でも、これだけじゃゲームとは呼べません。

【せんせい】

 そうですね。

 最低限、先の文章が次々読めるようにならなくては!

 うっかりしがちなことですが(ワタシだけでしょうか;)、次の文章を表示するためには、表示する場所をクリアしなければなりません。でないと、表示されている文章の上に次の文章が表示されてしまい、どんどん重なってひどいことに!( ̄□ ̄;

【でし】

 なるほど。

 他人の失敗談を聞くのは、ホントためになりますねー(笑)

【せんせい】

 キーッ。(ゲシッ)

【でし】

 あ~れ~~~(飛んでった;)

【せんせい】

 ところで、サイコロの時もテキストウィンドウを表示していましたが、あれは、テキストウィンドウのイメージ母艦コピーするだけでクリアできました。

 しかし、度はそうは行きません。何しろ半透明です。

 しかも、背景、立ち絵、テキストウィンドウの順に重なっています。

 テキスト書き換えるたびに、これらの重ね合わせを行いなおすことも考えられますが、場面転換も立ち絵の変更も無い場合の改ページでそれを行うのは、ずいぶん無駄っぽく感じられます。

 何か、いい裏技は無いかにゃーと考えた結果、クイズの時のようにテキストを表示する前の表画面の状態を別に保持しておいて、それを表画面にコピーするのが簡単でよさそうかなと思いました。

 早速試してみましょう!

#-----母艦設計-----------------------------------------------
!母艦設計=「母艦の可視はオフ母艦のタイトルは「アドベンチャー」
母艦を$000000で画面クリア母艦のスタイルは「枠固定」
母艦オフに最大化ボタン有効変更。
母艦のクライアント幅は640。母艦のクライアント高さは480。
母艦中央移動
母艦の可視はオン。
#------------------------------------------------------------

#-----宣言---------------------------------------------------
改ページ待機とは整数オフ。

裏_背景とはイメージの可視はオフ。
裏_背景の幅は640。裏_背景の高さは480。

裏_立ち絵とはイメージの可視はオフ。

裏_テキストウィンドウとはイメージの可視はオフ。
テキストウィンドウXとは整数=0
テキストウィンドウYとは整数=360
テキストウィンドウ幅とは整数=640
テキストウィンドウ高さとは整数=120

カーソル画像とはイメージの可視はオフの幅は24*2。の高さは24。

#カーソルを描く
カーソル画像を$000001で画面クリア文字書体は「MS ゴシック|20|太字」。文字色黒色。
カーソル画像の1,1,23,23へ「▼」を中央,中央で枠内文字描画文字色白色。
カーソル画像の0,0,22,22へ「▼」を中央,中央で枠内文字描画。

処理用1とはイメージの可視はオフ
の幅は24。の高さは24。

セル1とはイメージの可視はオフの幅は24。の高さは24。

セル2とはイメージの可視はオフの幅は24。の高さは24。

ブリンクとはアニメ
のX=640-35。のY=480-35。

表画面とはイメージの可視はオン。
表画面の幅は母艦のクライアント幅。表画面の高さは母艦のクライアント高さ。
表画面のXは0。表画面のYは0。
表画面のマウス押した時は~
  もし、改ページ待機オンならば
    もし、表画面の押されたボタン=左ならば
      テキストウィンドウクリア。

    違えば
      戻る
  違えば
    戻る

保持用とはイメージの可視はオフ。
保持用の幅は母艦のクライアント幅。保持用の高さは母艦のクライアント高さ。

#------------------------------------------------------------


#-----BGM再生------------------------------------------------
#「こぎつね.mid」をBGM再生。
#------------------------------------------------------------

#-----背景を表示---------------------------------------------
裏_背景の画像は「背景1.jpg」
裏_背景を表画面の0,0へ画像コピー。
#------------------------------------------------------------

#-----立ち絵を表示-------------------------------------------
裏_立ち絵の画像は「NAKO.bmp」
裏_立ち絵を表画面の0,0へ画像合成改。
#------------------------------------------------------------

#-----テキストウィンドウを表示-------------------------------
裏_テキストウィンドウの画像は「TXTWIN.bmp」
裏_テキストウィンドウの5,5,630,110を表画面のテキストウィンドウX,テキストウィンドウYへ50で画像部分透過コピー。
#------------------------------------------------------------

#------------------------------------------------------------
表画面を保持用の0,0へ画像コピー。

#------------------------------------------------------------

#-----テキストを表示-----------------------------------------
表画面のテキストウィンドウX+10,テキストウィンドウY+10へ「我輩はNAKOである。  {改行}名前はまだない。{改行}             (え;)」を100でノベルテキスト描画。

#表画面のテキストウィンドウX+10,テキストウィンドウY+10へ「みぃ」を100でノベルテキスト描画。

#------------------------------------------------------------


#-----テキストウィンドウクリア-------------------------------
*テキストウィンドウクリア
  保持用を表画面の0,0へ画像コピー。
  ブリンクを停止。
  改ページ待機オフ。

#------------------------------------------------------------

#-----点滅カーソル表示---------------------------------------
*点滅カーソル

    表画面の640-35,480-35,24,24をセル1の0,0へ画像部分コピー。
    カーソル画像の0,0,24,24を処理用1の0,0へ画像部分コピー。
    処理用1をセル1の0,0へ画像合成改。  
    
    表画面の640-35,480-35,24,24をセル2の0,0へ画像部分コピー。
    カーソル画像の24,0,24,24を処理用1の0,0へ画像部分コピー。
    処理用1をセル2の0,0へ画像合成改。 
    
    ブリンクの画像は「セル1
セル2」
    表示隔は500。
    改ページ待機オン。
#------------------------------------------------------------

#-----BGM停止------------------------------------------------
#7秒待つ。
#BGM停止。
#ブリンクを停止。
#------------------------------------------------------------

#------------------------------------------------------------
# 関数
#------------------------------------------------------------
●BGM再生(Mを)
#    「M」を「BGM」でMCI開く
  V=500  #ボリューム初期値
  「open "{M}" alias {BGM} type mpegvideo」をMCI送信。  #ファイル開く
  「setaudio {BGM} volume to {V}」をMCI送信。  #ボリューム設定
    「play BGM repeat」をMCI送信。    #繰り返し再生

●BGM停止
#    「停止」と言う
  「status {BGM} volume」をMCI送信。V=それ。  #現在のボリュームを取得。
  10                    #繰り返しボリュームをマイナス
    V=V-50。                 #していきフェードアウト
    もし、V≦0ならば、V=0  #0以下を指定するとエラーになる
    「setaudio {BGM} volume to {V}」をMCI送信。
    1秒待つ。
    もし、V=0ならば抜ける。
    「BGM」をMCI停止。
    V=500。  #ボリュームを戻す(戻さないとなぜかサクラが鳴らなくなった!)
    「setaudio {BGM} volume to {V}」をMCI送信。
    「BGM」をMCI閉じる。  #必ず閉じる
#------------------------------------------------------------
●ノベルテキスト描画({グループ=?}OBJのX,YへSを{数値=200}Aで)
  XX=X
  (Sの文字数
    Sの回数から1文字抜き出す。
   
    もしそれ=「{CHR(10)}」ならば
      X=XX
      Y=Y+(それ文字高さ取得)
      続ける

    文字書体は「MS ゴシック|24|太字」。文字色黒色。
    OBJのX+2,Y+2へそれ文字描画。
    文字書体は「MS ゴシック|24|太字」。文字色白色。
    OBJのX,Yへそれ文字描画。
    描画処理反映
    (A/1000)秒待つ。
   
    X=X+(それ文字幅取得)
  点滅カーソル
#------------------------------------------------------------
●画像部分透過コピー({グループ=?}コピー元の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へ透明度で画像半透明コピー
  
  処理用→壊す。
#------------------------------------------------------------
●画像合成改({グループ=?}Sを{数値=0}X,{数値=0}Yで{グループ=?}DのX2,Y2へ)
 Cとは整数
//マスク画像はSの透過色を黒色それ以外を白色にしたもの
 マスク画像をイメージとして作成
 マスク画像→可視はオフ
 マスク画像→画像はS→名前
 マスク画像のX,Yを画像色取得してCに代入
 マスク画像をCで画像マスク作成
//ソース画像はSの透明色を黒色に変換したもの
 ソース画像をイメージとして作成
 ソース画像→可視はオフ
 ソース画像→画像はS→名前
 マスク画像を画像ネガポジ
 マスク画像をソース画像の0,0へ画像ANDコピー
 マスク画像を画像ネガポジ
//合成実行
 マスク画像をDのX2,Y2へ画像ANDコピー
 ソース画像をDのX2,Y2へ画像ORコピー
 マスク画像→壊す
 ソース画像→壊す
#-----------------------------------------------------------------------
●枠内文字描画({グループ=?}OBJのX,Y,W,HへSをA,Vで)
  xxとは整数。yyとは整数。
  もし、A=左ならば
    xx=X
  違えばもし、A=中央ならば
    xx=X+(W-(Sの文字幅取得))/2
  違えばもし、A=右ならば
    xx=(X+W)-(Sの文字幅取得)
  もし、V=上ならば
    yy=Y
  違えばもし、V=中央ならば
    yy=Y+(H-(Sの文字高さ取得))/2
  違えばもし、V=下ならば
    yy=(Y+H)-(Sの文字高さ取得)
  OBJのxx,yyへSを文字描画。
#------------------------------------------------------------

【でし】

 見事にクリアされましたが・・・

 これで終わり?

 次の文章はー?

【せんせい】

 今日ここまでー。

 プログラムには行き詰ってないけど、シナリオの仕様をどうするか悩み中・・・みたいな?

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

2009-09-01

ナゾ解明! だよ!!

| 21:49

 ってゆーか、ワタシが解明したわけじゃありませんが(汗)

 おかげさまで、1.5321では、昨日書いた文字描画も、別フォームに乗せたボタンが利かないナゾも、さらには「無効なポインタ操作」のナゾも、すっかり直っていました~♪


 ボタンがきかないのは、フォームをモーダル表示にした時だけだったみたいですね。

 ちなみに、意味不明だった「無効なポインタ操作」のエラーですが、散見される部品が壊れなかったりがらみのものだったぽいです。

 画像合成や、部分透過の関数の中の、壊してるところを全部コメントにしたらなぜか直ってたので。

 の当たりの問題が全部解決したのかは、分かりませんが、とりあえずエラーが出て終了も出来なかったのは直って、以前どおりに動いてます☆

 おや、いつのにか文字遅延描画が、直っていますですね。描画処理反映の修正をした成果なのでしょうか?!

 画像合成は、まだ直ってないようです。


 ともかくも、これで安心して、バージョンアップすることが出来ますヽ(^o^)ノ 

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