ページ 1 / 1
龍神録プログラミングの館、16章
Posted: 2012年11月01日(木) 18:43
by pepsi-365
(場違いだったらすいません)
龍神録のプログラミングの館をお世話になっている者です。
16章のミシャクジ様弾幕の「.csv」についてです。
フォルダから開こうとすると、
「開こうとしているファイル'storyH0.csv'は、実際にはその拡張子が示すファイル形式ではありません。このファイルを開く前に、ファイルが破損していないこと、信頼できる発行元からのファイルであることを確認してください。ファイルを今すぐ開きますか?」
というメッセージが毎回出ます。
「はい」を選ぶと閲覧できるのですが、
C++では読み込んでもらえず、弾幕が何も表示されません。
load.cppで、
「"../dat/csv/16章/storyH0.csv"」
(csvフォルダ内に「16章」というフォルダを作っています。)
で読み込もうとしても、何も出てきません。
拡張子が「.csv」の保存は一体どうすればいいのでしょうか。
コンパイラはVisualC++2008で、
15章までは普通にできました。
よろしくお願いします。
Re: 龍神録プログラミングの館、16章
Posted: 2012年11月01日(木) 19:15
by AKIЯA
まずは拡張子csvとはどんなファイルなのかを調べて見るとわかると思いますよ。
Re: 龍神録プログラミングの館、16章
Posted: 2012年11月01日(木) 19:16
by pepsi-365
調べたんですけど、「名前を付けて保存」をすればできるといった説明しか見当たらなかったのですが…。
Re: 龍神録プログラミングの館、16章
Posted: 2012年11月01日(木) 19:17
by AKIЯA
ここ読んでみて下さい。
http://e-words.jp/w/CSV.html
実体はテキストファイルである以上です。
Re: 龍神録プログラミングの館、16章
Posted: 2012年11月01日(木) 19:20
by pepsi-365
では、Excelではなくメモ帳などで編集・保存をすればいいのでしょうか。
Re: 龍神録プログラミングの館、16章
Posted: 2012年11月01日(木) 19:23
by AKIЯA
Excelでもcsvファイル出力できますが量が少ないならテキストでもいいと思いますよ。
先に言いますとcsvにはある一定のルールがあるので、読み込むソースコードがどの形式に対応しているか調べないとダメかもしれません。
Re: 龍神録プログラミングの館、16章
Posted: 2012年11月01日(木) 19:25
by pepsi-365
わかりました。
テキストエディタで一旦やってみます。
その場合は
60, 9, 0, 200, 150, 0, 60, 8, 1, 100, 0, 1200, 0, -1, -1, -1, -1,-
Re: 龍神録プログラミングの館、16章
Posted: 2012年11月01日(木) 19:26
by pepsi-365
途中送信してしまった…。
テキストエディタでやる場合は、
「60, 9, 0, 200, 150, 0, 60, 8, 1, 100, 0, 1200, 0, -1, -1, -1, -1, -1」
といった感じでいいんでしょうか。
Re: 龍神録プログラミングの館、16章
Posted: 2012年11月01日(木) 19:29
by AKIЯA
カンマ区切りならそれで正解だと思います。
頑張ってください。
Re: 龍神録プログラミングの館、16章
Posted: 2012年11月01日(木) 19:43
by pepsi-365
拡張子を「.csv」にしてメモ帳で作ってみたのですが、
弾幕はもちろん、自機まで表示されなくなってしまいました。
60, 9, 0, 200, 150, 0, 60, 8, 1, 100, 0, 1200, 0, -1, -1, -1, -1, -1
だけ書いたのですが…。
何がおかしいのでしょうか。
Re: 龍神録プログラミングの館、16章
Posted: 2012年11月01日(木) 19:53
by てんむすキツネ
もしかしたらオーバーフローかなにかしているのかもしれません。
原因はファイルではなく、
読み込む処理、もしくは読み込んだ値を保存する変数等にある気がします。
なんらかの原因でグラフィックハンドルを保存している変数の
値が書き換わっているのではないでしょうか。
ブレークポイント等を使って、きちんと思っていた変数に
設定した値が保存されているか調べて見てください。
( この読み込みをする前まではきちんと動いていたのでしょうか? )
Re: 龍神録プログラミングの館、16章
Posted: 2012年11月01日(木) 20:03
by AKIЯA
16章の読み込んでるところのソースです。
最初の2行読み飛ばすって書いてありますね。
► スポイラーを表示
コード:
//敵の出現情報をエクセルから読み込んで格納する関数
void load_story(){
int n,num,i,fp;
char fname[32]={"../dat/csv/storyH0.csv"};
int input[64];
char inputc[64];
fp = FileRead_open(fname);//ファイル読み込み
if(fp == NULL){
printfDx("read error\n");
return;
}
for(i=0;i<2;i++)//最初の2行読み飛ばす
while(FileRead_getc(fp)!='\n');
n=0 , num=0;
while(1){
for(i=0;i<64;i++){
inputc[i]=input[i]=FileRead_getc(fp);//1文字取得する
if(inputc[i]=='/'){//スラッシュがあれば
while(FileRead_getc(fp)!='\n');//改行までループ
i=-1;//カウンタを最初に戻して
continue;
}
if(input[i]==',' || input[i]=='\n'){//カンマか改行なら
inputc[i]='\0';//そこまでを文字列とし
break;
}
if(input[i]==EOF){//ファイルの終わりなら
goto EXFILE;//終了
}
}
switch(num){
case 0: enemy_order[n].cnt =atoi(inputc);break;
case 1: enemy_order[n].pattern =atoi(inputc);break;
case 2: enemy_order[n].knd =atoi(inputc);break;
case 3: enemy_order[n].x =atof(inputc);break;
case 4: enemy_order[n].y =atof(inputc);break;
case 5: enemy_order[n].sp =atof(inputc);break;
case 6: enemy_order[n].bltime =atoi(inputc);break;
case 7: enemy_order[n].blknd =atoi(inputc);break;
case 8: enemy_order[n].col =atoi(inputc);break;
case 9: enemy_order[n].hp =atoi(inputc);break;
case 10:enemy_order[n].blknd2 =atoi(inputc);break;
case 11:enemy_order[n].wait =atoi(inputc);break;
case 12:enemy_order[n].item_n[0]=atoi(inputc);break;
case 13:enemy_order[n].item_n[1]=atoi(inputc);break;
case 14:enemy_order[n].item_n[2]=atoi(inputc);break;
case 15:enemy_order[n].item_n[3]=atoi(inputc);break;
case 16:enemy_order[n].item_n[4]=atoi(inputc);break;
case 17:enemy_order[n].item_n[5]=atoi(inputc);break;
}
num++;
if(num==18){
num=0;
n++;
}
}
EXFILE:
FileRead_close(fp);
}
Re: 龍神録プログラミングの館、16章
Posted: 2012年11月01日(木) 20:08
by pepsi-365
お二方、ありがとうございました。
2行改行するのを忘れていました。
また、熱いお言葉、ありがとうございました。
Re: 龍神録プログラミングの館、16章
Posted: 2012年11月01日(木) 20:09
by pepsi-365
(解決です。)