ページ 11

マップが表示できません

Posted: 2012年9月01日(土) 22:31
by イマダニ
こんにちは。また質問させていただきます。
今回、64×64マップチップを用いて、ゲーム上のマップを表示しようと思い、それに関する学習をはじめました。
そこでまず目をつけたのが、DXライブラリ置場のサンプルプログラムの一つ、マップ表示の基本です。
ひとまずこれを打ち込み、いろいろいじりながら理解をしようと、実践したのがこちらのプログラムです。

コード:

// マップ表示基本
#include "DxLib.h"

#define MAP_SIZE	64			// マップチップ一つのドットサイズ

#define MAP_WIDTH	10			// マップの幅
#define MAP_HEIGHT	8			// マップの縦長さ

// マップのデータ
int MapData[ MAP_HEIGHT ][ MAP_WIDTH ] =
{
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
	{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } 
} ;

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
						 LPSTR lpCmdLine, int nCmdShow )
{
	ChangeWindowMode(TRUE);

	int i , j ;

	int mapimg=LoadGraph("chip.jpg");

	SetGraphMode( 640 , 480 , 64 ) ;
	if( DxLib_Init() == -1 )	// DXライブラリ初期化処理
	{
		 return -1;		// エラーが起きたら直ちに終了
	}

	// マップを描く
	for( i = 0 ; i < MAP_HEIGHT ; i ++ )
	{
		for( j = 0 ; j < MAP_WIDTH ; j ++ )
		{
			if( MapData[ i ][ j ] == 1 )
			{
				DrawExtendGraph(j * MAP_SIZE , i * MAP_SIZE , j * MAP_SIZE + MAP_SIZE , i * MAP_SIZE + MAP_SIZE , mapimg,TRUE);
			}
		}
	}

	// キー入力待ち
	WaitKey() ;

	DxLib_End() ;		// DXライブラリ使用の終了処理

	return 0 ;		// ソフトの終了
}
二次元配列の1の部分に画像を表示したいのですが表示されません。
真っ黒なままです。
何がいけないんでしょう?アドバイスお願いします。ちなみに画像は64×64の地面の画像です。

Re: マップが表示できません

Posted: 2012年9月01日(土) 23:03
by へにっくす
えーと
初めにLoadGraphして、
SetGraphMode( 640 , 480 , 64 ) ;
しちゃってますがSetGraphMode関数の説明ちゃんと読んでますか?(注意書きにロードしたものすべてリセットするとありますよ)
あと第3引数の64ってなんです?
64ビットの色の深さなんてあり得ません。
ちゃんとリファレンスページを読むことをお勧めします。

Re: マップが表示できません

Posted: 2012年9月01日(土) 23:38
by イマダニ
すいません、リファレンスページ読んできました。
で、注意書きに従い、setgraphmodeをloadgraphする前に書きましたが、表示されません。(;;)
思いきってSetGraphmodeをなくしてみたのですが、表示されません。
画像の名前を間違えているとかプロジェクトファイルに入れてないとかそういう初歩的なミスではないんですが……
なんででしょう?

Re: マップが表示できません

Posted: 2012年9月02日(日) 00:09
by softya(ソフト屋)
DxLib_Initの前にLoadGraphしても意味が無いですよ。
DxLib_Initの前にかけるのはウィンドウや画面設定関係の関数に限定されます。ChangeWindowModeやSetGraphmodeですね。

あとLoadGraph出来ているかLog.txtを確認してください。

Re: マップが表示できません

Posted: 2012年9月02日(日) 00:45
by イマダニ
うわー…なんてひどいミス。
ソフト屋さんに言われた通りやりましたら無事表示されました。
毎度ありがとうございます。Logを見るとloadしていなかったです。
今回のミスはリファレンスをよく読んでないのが主な原因ですね。
次サンプルに使ったことのない関数があったらしっかりリファレンスを読むよう心がけます。
へにっくすさん、ソフト屋さん、適切なアドバイス本当にありがとうございました。