この問題の理由としてはどのようなものが考えられるのでしょうか。
一応以下にコードを貼らせていただきます。
お時間のある時によろしくお願いします。
<main.cpp>
#include"DxLib.h"
#include"control.h"
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
ChangeWindowMode(true);
SetDrawScreen(DX_SCREEN_BACK);
DxLib_Init();
Control control;
while(1){
ScreenFlip();
ProcessMessage();
ClearDrawScreen();
control.Update();
control.Draw();
}
DxLib_End();
return 0;
}
#include"control.h"
#include"DxLib.h"
#include<tchar.h>
static int MARGIN = 10;
Control::Control(){
scene = new Scene;
player = new Player;
field = new Field;
battle = new Battle;
itemTable = new ItemTable;
}
void Control::Update(){
SetDrawArea(MARGIN, MARGIN, MARGIN+550, MARGIN+450);
player ->Update();
field ->Update();
itemTable->process(); //この行を書いて実行すると、画面になにも出力されず、そのウィンドウは固まってしまいます
if(scene->battle){
battle ->Update();
}
}
void Control::Draw(){
SetDrawArea(MARGIN, MARGIN, MARGIN+550, MARGIN+450);
field->Draw();
player->Draw();
if(scene->battle){
battle->Draw();
}
}
#include"ItemTable.h"
#include"sqlite3.h"
#include"DxLib.h"
#include<fstream>
#include<iostream>
using namespace std;
ItemTable::ItemTable(){
scene = new Scene;
}
int ItemTable::callBack(void *NotUsed, int argc, char **argv, char **azColName){
return 0;
}
int ItemTable::process(){
//データベースファイルの新規作成
sqlite3 *ItemDB = 0;
char *errMsg = 0;
int rc = sqlite3_open("Item.db", &ItemDB);
if(rc != SQLITE_OK){
cerr << "Error when the file open" << endl;
return -1;
}
//アイテムテーブルとストックテーブルの作成
//アイテムテーブル生成SQL
char ItemTable_Create_SQL[] = "create table ItemTable(ID INTEGER PRIMARY KEY, Name TEXT NOT NULL, Type TEXT NOT NULL, Attack INTEGER, Defence INTEGER, Comment TEXT NOT NULL)";
//ストックテーブル生成SQL
char StockTable_Create_SQL[] = "create table StockTable(ID INTEGER PRIMARY KEY, Stock INTEGER NOT NULL)";
//生成
sqlite3_exec(ItemDB, ItemTable_Create_SQL, 0, 0, &errMsg);
sqlite3_exec(ItemDB, StockTable_Create_SQL, 0, 0, &errMsg);
sqlite3_close(ItemDB);
//データベースにアイテムを登録
char Insert_Item_SQL[] = "INSERT INTO ItemTable(ID, Name, Type, Attack, Defence, Price, Comment)"
"values(%d, '%s', '%s', %d, %d, %d, '%s')";
fstream ifs("Item.csv");
if(!ifs.is_open()){
sqlite3_close(ItemDB);
return 0;
}
char dummy[100], zName[24], zType[10], zComment[128], InsertSQL[512];
int iID, iAttack, iDefence, iPrice;
ifs.getline(dummy, 100); //コメント無視
ifs.getline(dummy, 100); //コラム無視
while(1){
ifs >> iID >> zName >> zType >> iAttack>> iDefence >> iPrice >> zComment;
if(ifs.eof()){
break;
}
//データベースにアイテムを登録
sprintf(InsertSQL, Insert_Item_SQL, iID, zName, zType, iAttack, iDefence, iPrice, zComment);
sqlite3_exec(ItemDB, InsertSQL, 0, 0, &errMsg);
}
return 0;
}