Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2009-04-13

画像合成は落とし穴だよ、再び!!

| 21:11

【せんせい】

 さてさて、それではそれほどかっこいいわけじゃないけど、クイズゲームらしい画面をなでしこで描いてみましょ~☆ こーいう作業には苦手意識がありましたが、だんだん慣れてきました。習うより慣れろってやつですね!

【でし】

 しかし先生、表示がおかしいんですが?

【せんせい】

 ガーン・・・

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

#-----宣言----------------------------------------------------
黒板xとは整数。黒板x=15。
黒板yとは整数。黒板y=15。
黒板幅とは整数。黒板幅=400。
黒板高さとは整数。黒板高さ=220。

選択板xとは整数。選択板x=15。
選択板yとは整数。選択板y=250。
選択板幅とは整数。選択板幅=400。
選択板高さとは整数。選択板高さ=40。
選択板隔とは整数。選択板隔=10。

裏画面とはイメージの可視はオフ。
裏画面の幅は黒板幅。
裏画面の高さは黒板高さ+選択板高さ*2。
裏画面を$000000で画面クリア。

表画面とはイメージの可視はオフ。
表画面の幅は母艦の幅。
表画面の高さは母艦の高さ。
表画面を$FFFFAAで画面クリア。

処理用とはイメージの可視はオフ。

#-------------------------------------------------------------
画面準備
クリア

*画面準備
  塗り色は$008800。
  裏画面の0,0から黒板幅,黒板高さへ四角。

  塗り色は$DD9900。線色は$000001。
  裏画面の20,黒板高さから選択板幅,黒板高さ+選択板高さへ四角。
  塗り色は$FFFFFF。線太さは2
  裏画面の0,黒板高さから40,黒板高さ+選択板高さへ 


  裏画面の0,0,黒板幅,黒板高さを表画面の黒板x,黒板yへ画像部分コピー。

#ここ以下のどこかに問題が!
  処理用の幅は選択板幅。処理用の高さは選択板高さ。
  裏画面の0,黒板高さ,選択板幅,選択板高さを処理用の0,0へ画像部分コピー。
  数を0から3まで繰り返す。

    処理用を表画面の選択板x,選択板y+(選択板高さ+選択板隔)*数へ画像合成。
    数で条件分岐
      0ならば
        番号色=$BB0000
      1ならば
        番号色=$0000AA
      2ならば
        番号色=$EE8800
      3ならば
        番号色=$00AA00

#    表画面の選択板x+20,選択板y+20+(選択板高さ+選択板隔)*数を番号色で線色まで塗る。
    表画面の選択板x+20,選択板y+20+(選択板高さ+選択板隔)*数を番号色で塗る。
    文字サイズは24。文字色白色。
    表画面の26,選択板y+4+(選択板高さ+選択板隔)*数へ数+1を文字描画。

*クリア
  表画面を母艦の0,0へ画像コピー。
#-------------------------------------------------------------

 というわけで、またまたはまりました(涙)

 画像合成まではうまく行っているようなのですが、のあと色を塗る段階で、明らかに挙動がおかしいです。

 座標の指定がミスっているのかとも思いましたが、塗らずに点描画してみると、どうもんなことは無いらしい。

 「塗る」の挙動がおかしいのかと考えていろいろ試しましたが、もしかするとこれも「画像合成」の不具合かもしれません。

 「画像合成」を使わず、サンプルにあった「キャラ合成-正統」のやりかたで、画像合成を行ったところ、あっさり解決したからです。

 同じものを繰り返しで合成していってるだけなのに、何ゆえこんなことが?!

 しかも、合成は一見成功していて、合成したあとのやつを塗ってるだけなのに、なんで?

 どういう要因による問題なのかもよくわからないんですけど、とりあえず「画像合成」は封印して、「正統」のやり方で合成を行うか、SWinXさま作成の「画像合成改」を素直に使わせてもらうのがいいかもしないです。

http://www.himanavi.net/cgi/nade-1st/cbbs.cgi?mode=one&number=4114&type=4111&space=15&no=0


 とりあえず、解決編は以下のとおり。

 キャラ合成正統のやり方で合成。それ以外は同じ(はず)

 あとで、もっと単純化したプログラムで、ためしてみます・・・

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

#-----宣言----------------------------------------------------
黒板xとは整数。黒板x=15。
黒板yとは整数。黒板y=15。
黒板幅とは整数。黒板幅=400。
黒板高さとは整数。黒板高さ=220。

選択板xとは整数。選択板x=15。
選択板yとは整数。選択板y=250。
選択板幅とは整数。選択板幅=400。
選択板高さとは整数。選択板高さ=40。
選択板隔とは整数。選択板隔=10。

裏画面とはイメージの可視はオフ。
裏画面の幅は黒板幅。
裏画面の高さは黒板高さ+選択板高さ*2。
裏画面を$000000で画面クリア。

表画面とはイメージの可視はオフ。
表画面の幅は母艦の幅。
表画面の高さは母艦の高さ。
表画面を$FFFFAAで画面クリア。

処理用とはイメージの可視はオフ。
マスク画像とはイメージの可視はオフ。
#-------------------------------------------------------------
画面準備
クリア

*画面準備
  塗り色は$008800。
  裏画面の0,0から黒板幅,黒板高さへ四角。

  塗り色は$DD9900。線色は$000001。
  裏画面の20,黒板高さから選択板幅,黒板高さ+選択板高さへ四角。
  塗り色は$FFFFFF。線太さは2
  裏画面の0,黒板高さから40,黒板高さ+選択板高さへ 


  裏画面の0,0,黒板幅,黒板高さを表画面の黒板x,黒板yへ画像部分コピー。

  処理用の幅は選択板幅。処理用の高さは選択板高さ。
  裏画面の0,黒板高さ,選択板幅,選択板高さを処理用の0,0へ画像部分コピー。

  マスク画像の画像は「処理用」
  マスク画像を$000000で画像マスク作成。
  
  数を0から3まで繰り返す。

#    処理用を表画面の選択板x,選択板y+(選択板高さ+選択板隔)*数へ画像合成。
    マスク画像を表画面の選択板x,選択板y+(選択板高さ+選択板隔)*数へ画像ANDコピー。
    処理用を表画面の選択板x,選択板y+(選択板高さ+選択板隔)*数へ画像ORコピー。

    数で条件分岐
      0ならば
        番号色=$BB0000
      1ならば
        番号色=$0000AA
      2ならば
        番号色=$EE8800
      3ならば
        番号色=$00AA00

    表画面の選択板x+20,選択板y+20+(選択板高さ+選択板隔)*数を番号色で線色まで塗る。
    文字サイズは24。文字色白色。
    表画面の26,選択板y+4+(選択板高さ+選択板隔)*数へ数+1を文字描画。

*クリア
  表画面を母艦の0,0へ画像コピー。
#-------------------------------------------------------------

【でし】

 なんとか表示まではこぎつけましたね!

【せんせい】

 明日こは、文字を書きますよ!

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