RPGのアイテム処理を実装してみたのですが…
Posted: 2011年6月22日(水) 15:38
↓前回の記事です
http://dixq.net/forum/viewtopic.php?f=3&t=8715
前回改善してうまく動くようになったプログラムを実装し、それにセーブ・ロード機能を付けたのですが以下のエラー
" ItemProcessingCustom.exe の 0x0078bc4f でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x016c5e08 を読み込み中にアクセス違反が発生しました。 "
が、出て動作を停止してしまいます。(ごく稀に通ることがあります)
また、動作停止後デバッグすると " output.c " が開きますが見てもよくわかりませんでした。
以下プログラムです。(必要なものだけ残していますが、エラー内容は変わりませんでした。また、DxLibを使っています)
下に続きます。
http://dixq.net/forum/viewtopic.php?f=3&t=8715
前回改善してうまく動くようになったプログラムを実装し、それにセーブ・ロード機能を付けたのですが以下のエラー
" ItemProcessingCustom.exe の 0x0078bc4f でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x016c5e08 を読み込み中にアクセス違反が発生しました。 "
が、出て動作を停止してしまいます。(ごく稀に通ることがあります)
また、動作停止後デバッグすると " output.c " が開きますが見てもよくわかりませんでした。
以下プログラムです。(必要なものだけ残していますが、エラー内容は変わりませんでした。また、DxLibを使っています)
//WinMain.cpp
#include "WinMain.h"
#include "GameApplication.h"
static CGameAppli *Game;
int ProcessLoop();
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
ChangeWindowMode(TRUE);//ウィンドウモード変更
if(DxLib_Init() == -1 || SetDrawScreen(DX_SCREEN_BACK) != 0) //初期化と裏画面設定
{
return -1;
}
Game = new CGameAppli();
int GraphicStage = 0;
// while(裏画面を表画面に反映, メッセージ処理, 画面クリア)
while(ProcessLoop() ==0)
{
switch(GraphicStage)
{
case 0:
Game->GameInitialize();
Game->GameLoad();
GraphicStage = 10;
break;
case 10:
Game->GameEquipment();
break;
}
ScreenFlip();
//エスケープが入力 or GraphicStage 999 されたらブレイク
if(CheckHitKey(KEY_INPUT_ESCAPE) == 1 || GraphicStage == 999)
break;
}
Game->GameSave();//セーブ関数
SAFE_DELETE(Game);
DxLib_End(); // DXライブラリ終了処理
return 0;
}
int ProcessLoop()
{
//プロセス処理がエラーなら-1を返す
if(ProcessMessage() != 0)
return -1;
//画面クリア処理がエラーなら-1を返す
if(ClearDrawScreen() != 0)
return -1;
return 0;
}//WinMain.h
#ifndef WINMAIN_H_
#define WINMAIN_H_
#include "DxLib.h"
#include <windows.h>
#include <winbase.h>
#include <windowsx.h>
#include <math.h>
#include <time.h>
#include <tchar.h>
#include <uuids.h>
#include <stdio.h>
#include <wchar.h>
#include <crtdbg.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <strmif.h>
#include <control.h>
#include <process.h>
#include "StructBox.h"
#define SAFE_DELETE(x) {if(x){delete (x); (x) = NULL;}}
#define SAFE_DELETE_ARRAY(x) {if(x){delete[] (x); (x) = NULL;}}
#define SAFE_RELEASE(x) {if(x){(x)->Release(); (x) = NULL;}}
#endif//GameAppli.cpp
#include "GameApplication.h"
//------CGameAppli初期化関数------
CGameAppli::CGameAppli()
{
PlayerObj = new CPlayerObj();
ItemObj = new CItemObj();
}
//------CGameAppliデストラクタ関数------
CGameAppli::~CGameAppli()
{
SAFE_DELETE(PlayerObj);
SAFE_DELETE(ItemObj);
}
//------CGameAppliゲーム関係初期化関数------
void CGameAppli::GameInitialize()
{
ItemObj->ItemGetInitialize(PlayerObj);
}
//------CGameAppli装備関数------
void CGameAppli::GameEquipment()
{
PlayerObj->PlayerMainAction();
ItemObj->ItemMainAction(PlayerObj);
}
//------CGameSave関数------
void CGameAppli::GameSave()
{
ItemObj->DataSave(PlayerObj);
}
//------CGameLoad関数------
void CGameAppli::GameLoad()
{
ItemObj->DataLoad(PlayerObj);
}