環境はvs2015です
ゲームメインの終了がうまくいきません
Source.cppの一部
#include "DxLib.h"
#include "Header.h"
#include "map.h"
#include "enemy.h"
#include "camera.h"
#include "player.h"
#include "sound.h"
// 入力状態の初期化
int Input = 0;
int EdgeInput = 0;
int FrameStartTime = 0;
GameState g_gamestate = GAME_TITLE;
int Key[256]; // キーが押されているフレーム数を格納する
// WinMain関数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
ChangeWindowMode(TRUE);
// DXライブラリの初期化
if (DxLib_Init() == -1) return -1;
while (1)
{
// 画面のクリア
ClsDrawScreen();
switch (g_gamestate){
case GAME_TITLE:
//ゲームのタイトルを表示
gameTitle();
break;
case GAME_MAIN:
// アクションゲームのメイン関数を呼ぶ
ActMain();
break;
case GAME_CLEAR:
break;
case GAME_OVER:
gameOver();
break;
}
// 画面の更新
ScreenFlip();
}
// DXライブラリの後始末
DxLib_End();
// 終了
return 0;
}
// アクションサンプルプログラムメイン
int ActMain(void)
{
// 描画先を裏画面にセット
SetDrawScreen(DX_SCREEN_BACK);
// 垂直同期信号を待たない
SetWaitVSyncFlag(FALSE);
// 60FPS固定用、時間保存用変数を現在のカウント値にセット
FrameStartTime = GetNowCount();
//グラフィックを読込む
Init();
sound();
enemySet();
// メインループ開始、ESCキーで外に出る
while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
{
// 画面のクリア
ClsDrawScreen();
// 1/60秒立つまで待つ
while (GetNowCount() - FrameStartTime < 1000 / 60) {}
// 現在のカウント値を保存
FrameStartTime = GetNowCount();
keyUpdate();
//マップ・背景描画
DrawMap(&camerax, &cameray);
//敵の移動処理
MoveEnemy();
EnemyControl();
//敵のマップとのあたり判定
CalcEnemy();
//プレイヤーの移動処理
MovePlayer();
// プレイヤーのマップとのあたり判定
CalcPlayer();
//カメラスクロール
MoveCamera();
//衝突判定
if (CollisionCheck() == 2) {
g_gamestate = GAME_CLEAR;
break;
}else{
g_gamestate = GAME_OVER;
}
//プレイヤーの攻撃
PlayerAttack();
EnemyAttackCheck();
//敵の表示
EnemyDisp();
EnemyEffectDisp();
EnemyEffectSet();
EnemyEffectControl();
//キャラクター描画
PlayerDisp();
EffDisp();
DrawHP();
#if DEBUG
debug();
#endif
// 画面の更新
ScreenFlip();
}
stop();
// 終了
return 0;
}
例外が発生した場所は
void debug() {
DrawFormatString(0, 0, GetColor(0, 255, 0), "エリア1=keyX");←←←ココ
DrawFormatString(0, 30, GetColor(0, 255, 0), "エリア2=keyC");
DrawFormatString(0, 60, GetColor(0, 255, 0), "エリア3=keyA");
DrawFormatString(0, 90, GetColor(0, 255, 0), "エリア4=keyS");
DrawFormatString(0, 120, GetColor(0, 255, 0), "エリア5=keyD");
if ((Input & PAD_INPUT_2) != 0) {
player.x = warpPoint_x[0];
player.y = warpPoint_y[0];
}
if ((Input & PAD_INPUT_3) != 0) {
player.x = warpPoint_x[1];
player.y = warpPoint_y[1];
}
if ((Input & PAD_INPUT_4) != 0) {
player.x = warpPoint_x[2];
player.y = warpPoint_y[2];
}
if ((Input & PAD_INPUT_5) != 0) {
player.x = warpPoint_x[3];
player.y = warpPoint_y[3];
}
if ((Input & PAD_INPUT_6) != 0) {
player.x = warpPoint_x[4];
player.y = warpPoint_y[4];
}
}
コンパイル時には問題なくゲームの動作も正常なのですが、ゲームを終了しようとすると例外が発生してしまいます