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 -