マップが表示できません

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
イマダニ

マップが表示できません

#1

投稿記事 by イマダニ » 13年前

こんにちは。また質問させていただきます。
今回、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の地面の画像です。

アバター
へにっくす
記事: 634
登録日時: 13年前
住所: 東京都

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

#2

投稿記事 by へにっくす » 13年前

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

イマダニ

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

#3

投稿記事 by イマダニ » 13年前

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#4

投稿記事 by softya(ソフト屋) » 13年前

DxLib_Initの前にLoadGraphしても意味が無いですよ。
DxLib_Initの前にかけるのはウィンドウや画面設定関係の関数に限定されます。ChangeWindowModeやSetGraphmodeですね。

あとLoadGraph出来ているかLog.txtを確認してください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

イマダニ

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

#5

投稿記事 by イマダニ » 13年前

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

閉鎖

“C言語何でも質問掲示板” へ戻る