30. 2つ同時に画像を動かす


画像を動かす方法はもう見てきましたが、ここでおさらいしておきましょう。

画像を動かす方法には2種類ありますね。

座標を計算しては、描画し、ちょっと待って、座標を計算・・の繰り返し。

しかしこんな直線型プログラムでかいてしまったらどうでしょう。



せっかく画像1のx座標を1ずつ増やして描画するプログラムを作ったとしても、

後から画像2が入れたくなった時、簡単に入れる事が出来ません。ではこんな風に書き換えてみましょう。



こんなプログラムを書けば、画像2でも3でもいくらでもすぐに入れる事が出来ますね。

一見当たり前のようでとても重要な事なんです。上の例は1つのキャラしか動かす事が出来ない悪いプログラムの例です。

みなさん気をつけましょう。サンプルプログラムでは2つのキャラを同時に動かしています。


#include "DxLib.h"
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
        ChangeWindowMode( TRUE ) ;          // ウインドウモードに変更
        if( DxLib_Init() == -1 ) return -1; //DXライブラリ初期化 エラーが起きたら終了 
 
        int x1=640-24,x2=0,image[16];
 
        SetDrawScreen( DX_SCREEN_BACK ) ;//描画先を裏画面に設定
 
        LoadDivGraph( "char.png" , 16 , 4 , 4 , 32 , 32 , image ) ;//画像を分割してimage配列に保存
                                
        while(1){
                ClearDrawScreen();                   //裏画面のデータを全て削除
                if( ProcessMessage() == -1 ) break ; //異常がおきたら終了
                x1-=3;                               
                x2+=5;
                DrawGraph(x1,150,image[4]  ,TRUE);   //左向き画像の描画
                DrawGraph(x2,350,image[12] ,TRUE);   //右向き画像の描画
                if(x1<0) break;                      //画像1のx座標が0未満になれば終了
                ScreenFlip() ;//裏画面データを表画面へ反映
        }
        DxLib_End() ;// DXライブラリ使用の終了処理
        return 0 ;// ソフトの終了
}

実行結果

→掲示板で質問する



- Remical Soft -