



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 -