DXライブラリでのファイル読み込みについて
Posted: 2014年5月29日(木) 14:06
始めまして、いつも参考にさせていただいております。
今自分はシューティングゲームを作ろうとしていて、こちらのサイトのソースを参考に(というかほぼコピーして)させていただいているのですが、
ファイルの読み込みがうまくいきません。
コンパイルは通るのですが、デバッグ実行するとアクセス違反が起きてしまいます。
という風になっており、enemy_t enemey[ENEMY]はほかのcppファイルで実体を作っています。
enemy_1.csvの中身は
カウント,パターン,向き,動き,体力,アイテム,画像
120,2,2,2,100,2,2
のようにしています。
何が間違っているのか、どうしてもわかりません…
文字コードにも関係があるのでしょうか?
なにとぞ助言を下さるとうれしいです。
環境はC++,visualstudio2010 Windows7です。
今自分はシューティングゲームを作ろうとしていて、こちらのサイトのソースを参考に(というかほぼコピーして)させていただいているのですが、
ファイルの読み込みがうまくいきません。
コンパイルは通るのですが、デバッグ実行するとアクセス違反が起きてしまいます。
#include "GV.h"
#include "enemy.h"
void enemy_load(int stage){
char no_use[256];
char inputc[256];
int input[256];
int filehandle;
int num = 0,n = 0;
switch(stage){
case 1:
if(filehandle = FileRead_open("data/enemy_1.csv") == 0){
DrawFormatString(0,0,0xFFFFFF,"error");
WaitKey();
return ;
}
break;
case 2:
if(filehandle = FileRead_open("data/enemy_2.csv",false) == 0){
DrawFormatString(0,0,0xFFFFFF,"error");
WaitKey();
}
break;
default:
break;
}
FileRead_gets(no_use,256,filehandle); //一行読み飛ばし
DrawFormatString(10,10,0xFFFFFF,"%s",no_use);
WaitKey();
while(true){
for(int i = 0;i < ENEMY;i++){
inputc[i] = input[i] = FileRead_getc(filehandle); //一文字取得
if(inputc[i] == '/'){
while(FileRead_getc(filehandle) != '\0');
i = -1;
continue;
}
if(input[i] == ',' || input[i] == '\n'){
inputc[i] = '\0';
break;
}
if(input[i] == 'EOF'){
goto EXFILE;
}
}
switch(num){
case 0: enemy[n].cnt =atoi(inputc);break;
case 1: enemy[n].pattern =atoi(inputc);break;
case 2: enemy[n].muki =atoi(inputc);break;
case 3: enemy[n].m_knd =atoi(inputc);break;
case 4: enemy[n].hp_max =atoi(inputc);break;
case 5: enemy[n].item =atoi(inputc);break;
case 6: enemy[n].img =atoi(inputc);break;
}
num++;
if(num==7){
num=0;
n++;
}
}
WaitKey();
EXFILE:
FileRead_close(filehandle);
}
// enemy.h
#ifndef ENEMY_H
#define ENEMY_H
#define ENEMY 100
typedef struct{
//フラグ、カウンタ、移動パターン、向き、敵の種類、HP最大値、落とすアイテム、画像
int flag,cnt,pattern,muki,m_knd,hp,hp_max,item,img;
//座標、速度x成分、速度y成分、スピード、角度
double x,y,vx,vy,sp,ang,cnt2;
//弾幕開始時間、弾幕の種類、弾の種類、色、状態、待機時間、停滞時間
int bltime,blknd,blknd2,col,state,wtime,wait;
}enemy_t;
extern enemy_t enemy[ENEMY];
extern void draw_enemy(int i);
#endif // ENEMY_H
enemy_1.csvの中身は
カウント,パターン,向き,動き,体力,アイテム,画像
120,2,2,2,100,2,2
のようにしています。
何が間違っているのか、どうしてもわかりません…
文字コードにも関係があるのでしょうか?
なにとぞ助言を下さるとうれしいです。
環境はC++,visualstudio2010 Windows7です。