トップページ > 過去ログ > 記事閲覧
分割して読み込んだ画像配列に関して
名前:YH 日時: 2011/11/17 04:14

現在、アクションゲームを作成しているのですが、 どうしても解決できないので質問させて下さい。 LoadDivGraph関数で画像を分割して読み込みますよね? 例えば、Image[0]に1枚目の画像を。 Image[1]に2枚目の画像を読み込むとします。 このとき、画面にはImage[0]、つまり1枚目の画像が表示されています。 そして、CheckHitKey関数でzキーが押されたら、Image[1]、つまり2枚目の画像に更新したいのですが、 自分がプログラミングすると、 Image[0],Image[1]、この2枚の画像が重なって表示されてしまいます。 (どちらも透過処理をしている為、ひとつの範囲に二人のキャラ画像が重なって表示されて見えてしまいます)。 なんとか、Image[0]→Image[1]と移行するように画像を処理することはできませんでしょうか? void Func( void ) { LoadDivGraph("ファイル名.png", 16, 4, 4, 64, 64, Image ); DrawGraph( x, y, Image[0] , TRUE ); // 上下左右のキー入力に対応して x, y の座標値を更新する if( CheckHitKey( KEY_INPUT_LEFT ) == 1 ) x -= 4 ; if( CheckHitKey( KEY_INPUT_RIGHT ) == 1 ) x += 4 ; if( CheckHitKey( KEY_INPUT_UP ) == 1 ) y -= 4 ; if( CheckHitKey( KEY_INPUT_DOWN ) == 1 ) y += 4 ; if( CheckHitKey( KEY_INPUT_Z ) == 1 ) DrawGraph( x, y, Image[1] , TRUE ); } 上記が問題の箇所のコードになります。

Page: 1 |

Re: 分割して読み込んだ画像配列に関して ( No.1 )
名前:meigin 日時:2011/11/17 07:19

プログラムは上から順に実行されて行きます。 DrawGraph( x, y, Image[0] , TRUE ); ここの時点で、Image[0]が表示されます。 if( CheckHitKey( KEY_INPUT_Z ) == 1 )が真ならば Image[1]が表示されます。 なので二重に表示されるわけです。 条件分岐は場合分けをする場合はelseを使います。
Re: 分割して読み込んだ画像配列に関して ( No.2 )
名前:YH 日時:2011/11/17 08:26

meiginさんありがとうございます。 else文では反応しなかったのですが、 よく考えてみましたら まず「何故(どうやって)Image[0]は表示されているのか?」と突き詰めましたら、 下記のコードで解決致しました。 (Image[1]ばかりにとらわれていたようです)。 // Zキーが押されていないとき if( !CheckHitKey( KEY_INPUT_Z ) == 1 ) DrawGraph( x, y, Image[0] , TRUE ); meiginさんのおかげです。 ありがとうございます。

Page: 1 |