15パズル製作―2
やる気があるうちに更新しようw前回は画像を表示したけど、あれは主記憶装置から出力してるので遅いらしい。そこで、メモリに一度入れてから画像を出したいと思います。まずは、変数Handleを用意int GrHandle; // データハンドル格納用変数次に変数に画像を入れます。GrHandle = LoadGraph( "画像/pazulu.bmp" ) ; //画像をロード最後に画像の描写!DrawGraph( 0 , 0 , GrHandle , TRUE ) ; //画像の描写ちなみに、変数に入っているものを取り出しているので、関数が少し変わり、前回"画像/pazulu"だった部分は変数名になっています。実行すると、前回の画像が一番左上に表示されますが、さほど変わらないので省略。この画像を15パズルのメインにしたいけど、一枚の画像では中を動かすのは無理なので画像を分割したいと思います。int GrHandle[16];LoadDivGraph( "ファイル名" , 画像の数 , 横の画像の数 , 縦の画像の数 , 横の大きさ(ピクセル) , 縦の大きさ , 配列名 ) ;DrawGraph( 0 , 0 , 配列名 , TRUE )変数を16個用意(複数並んだ変数を配列といいます)して、そこに分割した画像を格納します。そしてDrawGraphで描写。実際に使ってみます。int GrHandle[16];LoadDivGraph( "画像/pazulu.bmp" , 16 , 4 , 4 , 64 , 64, GrHandle ); // 画像の分割読み込みDrawGraph( 50, 50, GrHandle[8], TRUE ); // 画像を表示なぜGrHandle[8]と指定しているのに、番号は9なのか。それは、配列というのが0から始まっているからです。だから、配列を[16]と指定すると、17個の配列ができますwソースコードはこちら!#include "DxLib.h" // プログラムは WinMain から始まりますint WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1 ; // エラーが起きたら直ちに終了 } SetMainWindowText("test") ; //ウインドウの名前を変えるChangeWindowMode(TRUE); //ウィンドウを表示int GrHandle[16]; //配列名GrHandle(17個)LoadDivGraph( "画像/pazulu.bmp" , 16 , 4 , 4 , 64 , 64, GrHandle ); // 画像の分割読み込みDrawGraph( 50, 50, GrHandle[8], TRUE ); // 画像を表示 WaitKey(); // キー入力待ちDxLib_End(); // DXライブラリ終了処理return 0; }