初めて質問させていただきます。
つい昨日からVisual Studio Community 2017とDXライブラリを用いてのゲームプログラミングを勉強し始めようと思い、
まずはマップデータを示す二次元配列と32×32サイズのマップチップの画像データを使ったマップ描画を試してみようと思ったのですが、
デバッグを実行してみると真っ暗な画面でうまく画像が描画できません。
ログ等を見てもエラーは見当たらないようでした。また、マップチップの画像をまとめたフォルダも.cppファイルがある
フォルダと同じ階層に入れてあります。
いろいろ調べては見たのですが解決に至らなかったので質問させていただきました。
以下ソースコードになります。
// マップ表示基本
#include "DxLib.h"
#define MAP_SIZE 32 // マップチップ一つのドットサイズ
#define MAP_WIDTH 20 // マップの幅
#define MAP_HEIGHT 15 // マップの縦長さ
// マップのデータ
int MapData[MAP_HEIGHT][MAP_WIDTH] =
{
{ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 } ,
{ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 } ,
{ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 } ,
{ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 } ,
{ 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1 } ,
{ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 } ,
{ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 } ,
{ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 } ,
{ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 } ,
{ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 } ,
{ 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1 } ,
{ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 } ,
{ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 } ,
{ 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 } ,
{ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 }
};
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
int i, j, tile01, tile02, tile03;
SetGraphMode(640, 480, 16);
if (DxLib_Init() == -1) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// マップチップのロード
tile01 = LoadGraph("マップチップの保存フォルダ/tile01.png");
tile02 = LoadGraph("マップチップの保存フォルダ/tile02.png");
tile03 = LoadGraph("マップチップの保存フォルダ/tile03.png");
// マップを描く
for (i = 0; i < MAP_HEIGHT; i++)
{
for (j = 0; j < MAP_WIDTH; j++)
{
if (MapData[i][j] == 0)
{
DrawGraph(j * MAP_SIZE, i * MAP_SIZE, tile01, FALSE);
}
else if (MapData[i][j] == 1)
{
DrawGraph(j * MAP_SIZE, i * MAP_SIZE, tile02, FALSE);
}
else if (MapData[i][j] == 2)
{
DrawGraph(j * MAP_SIZE, i * MAP_SIZE, tile03, FALSE);
}
}
}
// キー入力待ち
WaitKey();
DxLib_End(); // DXライブラリ使用の終了処理
return 0; // ソフトの終了
}