TNP資料室 @ ウィキ

マス目を画像を並べて表示する

最終更新:

kokeiro

- view
だれでも歓迎! 編集

マス目を画像を並べて表示する

 画像をタイルのように並べるには、for文を使うとうまく出来ます。今回は32×32サイズのグラフィックを用います。横に並べようとした場合、1枚目を描画したら2枚目をその32ドット右に描画、3枚目はさらに32ドット右に...という風に描画します。縦方向も同じです。ボードは8×8とします。
 まずはマス目の画像をロードし、1枚だけ描画してみます。マス目に使用する画像はいくつか種類がありますので、配列を使ってハンドルを格納します。今回の画像のロードに使う関数は前回のものとは異なります。詳しくは本家サイトの関数リファレンスを。
 この画像を使用します。
bord.bmp

game.cpp

グローバル変数の本体と描画関数を書き足します。グローバル変数の名前はBordGraphicとし、要素数は4とします。文字は消さないでおきます。
...
int BordGraphic[4];

// ゲームの関数
// 戻り値 なし  引数 なし
void Game(){
	DrawGraph(0,0,BordGraphic[0],FALSE);
	DrawString(100,200,"ゲーム画面です",white);
	DrawString(100,220,"Zでクリア画面",white);
	DrawString(100,240,"Xでリタイア",white);
...
}

main.h

グローバル変数の外部変数宣言を書き足します。
...
extern int GameState;						// ゲームの状態を格納する変数
extern int Key[256];						// キーの押下時間を格納する配列
extern int white;						// 白のカラーコードを格納する

extern int BordGraphic[4];					// マス目のグラフィック

extern int TitleGraphic;					// タイトルのグラフィックハンドル
...

main.cpp

画像を読み込みます。
...
int WINAPI WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
...
	TitleGraphic = LoadGraph("picture/title_back.bmp");	// タイトルの画像を読み込む
	LoadDivGraph("picture/bord.bmp",4,4,1,32,32,BordGraphic);
...

 実行してみてください。タイトル画面からゲーム画面に進むと、左上に1マスだけ表示されると思います。次はこれを8×8マス表示してみましょう。

game.cpp

 文字の表示位置も変えました。
...
void Game(){
	for(int y=0 ; y<8 ; y++){
		for(int x=0 ; x<8 ; x++){
			DrawGraph(x*32+50,y*32+100,BordGraphic[0],FALSE);
		}
	}

	DrawString(400,200,"ゲーム画面です",white);
	DrawString(400,220,"Zでクリア画面",white);
	DrawString(400,240,"Xでリタイア",white);

	if( Key[KEY_INPUT_Z] == 1 )			// Zキーが押されたらゲームを始める
		GameState = 2;
	if( Key[KEY_INPUT_X] == 1 )			// Zキーが押されたらゲームを始める
		GameState = 3;
}

 全て同じ画像ですが、並べて表示することが出来ました。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

添付ファイル
目安箱バナー