何故エラーが出るのか分かりません;
投げやりな質問の仕方で申し訳ありませんがエラーの原因を教えて頂けれるとありがたいです;;
友達から貰ったコードなのですが、諸事情で連絡が取ることができないので助けて頂けると幸いです。
発生している問題・エラーメッセージ
何故エラーが出るのか分かりません; 投げやりな質問の仕方で申し訳ありませんがエラーの原因を教えて頂けれるとありがたいです;;
該当のソースコード
#include"DxLib.h" //キャラクタ型宣言 struct CharaData { int x; int y; int ghandle; int life; int image_w; int image_h; int bounds_w; int bounds_h; }; //プロトタイプ宣言 void MyMove(int movable); void JitamaMove(void); void TekiMove(void); int IsAtari(CharaData, CharaData); int AtariHantei(void); void GameOver(void); void GameClear(void); void ChaInit(void); //構造化設定 struct CharaData jikidata; struct CharaData jitama[7]; struct CharaData tekidata[5]; int trigger = 0; //メインプログラム int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC) { ChangeWindowMode(true); //ウィンドウモードで起動 if (DxLib_Init() == -1) return -1; //DXライブラリの初期化 ChaInit(); SetDrawScreen(DX_SCREEN_BACK); while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) { ClsDrawScreen(); //画面消去 MyMove(true); JitamaMove(); TekiMove(); GameOver(); GameClear(); if (AtariHantei() == 1)break; ScreenFlip(); } DxLib_End(); return 0; }; //キャラクタ初期設定 void ChaInit(void) { //自分キャラクタの初期設定 jikidata.ghandle = LoadGraph("自キャラ.bmp"); jikidata.x = 0; jikidata.y = 0; jikidata.image_w = 48; jikidata.image_h = 32; jikidata.bounds_w = 32; jikidata.bounds_h = 20; //自弾の初期設定 int g = LoadGraph("自弾.bmp"); for (int i = 0; i<7; i++) { jitama[i].ghandle = g; jitama[i].image_w = 64; jitama[i].image_h = 16; jitama[i].bounds_w = 48; jitama[i].bounds_h = 12; } //敵キャラクタデータの初期化 int k = LoadGraph("敵キャラ.bmp"); for (int i = 0; i<5; i++) { tekidata[i].ghandle = k; tekidata[i].life = 1; tekidata[i].x = GetRand(100) + 500; tekidata[i].y = GetRand(448); tekidata[i].image_w = 32; tekidata[i].image_h = 32; tekidata[i].bounds_w = 20; tekidata[i].bounds_h = 20; } } //自キャラクタ移動関数 void MyMove(int movable) { int key = GetJoypadInputState(DX_INPUT_KEY_PAD1); if (key&PAD_INPUT_UP) jikidata.y = jikidata.y - 4 * (movable == TRUE); if (key&PAD_INPUT_DOWN) jikidata.y = jikidata.y + 4 * (movable == TRUE); if (key&PAD_INPUT_LEFT) jikidata.x -= 4 * (movable == TRUE); if (key&PAD_INPUT_RIGHT)jikidata.x += 4 * (movable == TRUE); if (jikidata.x<0) jikidata.x = 0; if (jikidata.x>640 - 32) jikidata.x = 640 - 32; if (jikidata.y<0) jikidata.y = 0; if (jikidata.y>480 - 32) jikidata.y = 480 - 32; DrawGraph(jikidata.x, jikidata.y, jikidata.ghandle, TRUE); } //自キャラクタ弾の移動関数 void JitamaMove(void) { int key = GetJoypadInputState(DX_INPUT_KEY_PAD1); if ((key&PAD_INPUT_A) && (trigger == 0)) { for (int i = 0; i<7; i++) { if (jitama[i].life == 0) { jitama[i].life = 1; jitama[i].x = jikidata.x + 24; jitama[i].y = jikidata.y + 0; break; } } trigger = 10; } if (trigger>0) trigger = trigger - 1; for (int i = 0; i<7; i++) { if (jitama[i].life>0) { jitama[i].x = jitama[i].x + 10; DrawGraph(jitama[i].x, jitama[i].y, jitama[i].ghandle, TRUE); if (jitama[i].x>640) jitama[i].life = 0; } } } //敵キャラクタ移動関数 void TekiMove(void) { for (int i = 0; i<5; i++) { if (tekidata[i].life >0) { int teki_y = GetRand(40) - 20; int teki_x = GetRand(4) - 1; tekidata[i].x = tekidata[i].x - teki_x; tekidata[i].y = tekidata[i].y - teki_y; if (tekidata[i].x<-32) tekidata[i].x = -32; if (tekidata[i].y<0) tekidata[i].y = 0; if (tekidata[i].y>480 - 32) tekidata[i].y = 480 - 32; DrawGraph(tekidata[i].x, tekidata[i].y, tekidata[i].ghandle, TRUE); } } } //当たり判定チェック int IsAtari(CharaData a, CharaData b) { int retval = 0; int ax1 = a.x + (a.image_w - a.bounds_w) / 2; int ay1 = a.y + (a.image_h - a.bounds_h) / 2; int ax2 = a.x + (a.image_w + a.bounds_w) / 2; int ay2 = a.y + (a.image_h + a.bounds_h) / 2; int bx1 = b.x + (b.image_w + b.bounds_w) / 2; int by1 = b.y + (b.image_h + b.bounds_h) / 2; int bx2 = b.x + (b.image_w + b.bounds_w) / 2; int by2 = b.y + (b.image_h + b.bounds_h) / 2; if ((ax1<bx2) && (bx1<ax2) && (ay1<by2) && (by1<ay2)) { retval = 1; } return (retval); } //当たり判定メイン int AtariHantei() { for (int i = 0; i<50; i++) { if (tekidata[i].life>0) { if (IsAtari(jikidata, tekidata[i]) == 1) return(1); for (int j = 0; j<3; j++) { if (jitama[j].life>0) { if (IsAtari(jitama[j], tekidata[i]) == 1) { jitama[j].life = 0; tekidata[i].life = 0; } } } } } return (0); } //ゲームオーバーチェック関数 void GameOver(void) { MyMove(FALSE); for (int i = 0; i<5; i++) { if (tekidata[i].x<64) { int col = GetColor(255, 0, 0); SetFontSize(100); SetFontThickness(9); ChangeFontType(DX_FONTTYPE_EDGE); int x = 320 - GetDrawStringWidth("GAMEOVER", 8) / 2; DrawString(x, 160, "GAMEOVER", col); } } } //ゲームクリアチェック関数 void GameClear(void) { int count = 0; for (int i = 0; i<5; i++) { if (tekidata[i].life<1) { count++; } } if (count >= 5) { int col = GetColor(255, 255, 0); SetFontSize(100); SetFontThickness(9); ChangeFontType(DX_FONTTYPE_EDGE); int x = 320 - GetDrawStringWidth("GAMECLEAR", 8) / 2; DrawString(x, 160, "GAMECLEAR", col); } }
補足情報(FW/ツールのバージョンなど)
VisualStudio 2015