龍神録の二面
Posted: 2013年8月28日(水) 17:08
龍神録のソースコードをほとんど借りて、ブロック崩し的なものを作っています。
手順は、ほとんど龍神録とソースが同じなので、龍神録の第48章(結構やりやすい)で自分なりにコードを書き加えて、実行して、思い通りにできたら、次はブロック崩しの方にそれをコピペ・・てきなかんじでやっています。
ここで、龍神録48章(これはいっかつDLのなかの48章です)で自分でコードを書き加え、実行しましたが、うまくいきません。
なのでこの場を借りて質問させてください。
とりあえずコードの1部分
main.cpp
load.cpp
動作と、質問
実行→(1面)実行されて、自分が決めた「stage_count」になったら説明文が表示される(stages.e_flag > 0),→説明の表示が消えるとstage_countが加算されて、普通の龍神録に・・・→ラスボスを倒して、新たに追加した「boss.end_stage_flag 」たるもの0より上(フラグが立っていたら)→func_stateを99に戻して初期化から始める→2面、ここで説明文が表示されません、stage_countはしっかり指定した時間で止まります。(敵はしっかり出てきます(storyの方はしっかり読み込まれていることがわかる))
graphなどは、1面で表示されており、また、2面に移る際に各構造体の変数はmemsetで初期化されるので、同じことの繰り返しで表示されるのだと思ったので、載せませんでした。
またsprintfをやめて、しっかり固定した1つのファイルのパスをかくやり方もしました、そうすれば2面でも同じ説明文が出るはずだと・・・・・表示されませんでした・・・・
read_errorとは表示されていないので、loadはできていると思うのですが・・・・どこかおかしいと推測できる箇所はあるのでしょうか?
ちなみに「stages.e_flag 」が0より上だと説明が表示される設定になっております。(graph.cppより)
手順は、ほとんど龍神録とソースが同じなので、龍神録の第48章(結構やりやすい)で自分なりにコードを書き加えて、実行して、思い通りにできたら、次はブロック崩しの方にそれをコピペ・・てきなかんじでやっています。
ここで、龍神録48章(これはいっかつDLのなかの48章です)で自分でコードを書き加え、実行しましたが、うまくいきません。
なのでこの場を借りて質問させてください。
とりあえずコードの1部分
main.cpp
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
while(ProcessLoop()==0){//メインループ
music_ini();
switch(func_state){
case 0://初回のみ入る処理
load(); //データロード
first_ini();//初回の初期化
func_state=99;
break;
case 99://STGを始める前に行う初期化
ini();
load_read();
func_state=100;
break;
case 100://通常処理
calc_ch();
ch_move();
cshot_main();
enemy_main();
boss_shot_main();
shot_main();
out_main();
effect_main();
calc_main();
graph_main();
bgm_main();
if(boss.flag==0 && stages.e_flag == 0)
stage_count++;
if(boss.end_stage_flag == 1)
{
stage++;
//func_state = 99;//STGを始める前に行う初期化へ戻る
stage_count = 0;
}
int Color;
Color = GetColor( 255 , 25 , 255 ) ;
DrawFormatString( 500, 400, Color, "第 %d 面\n", stage ) ;
DrawFormatString( 500, 350, Color, "フラグ= %d \n", stages.e_flag ) ;
break;
default:
printfDx("不明なfunc_state\n");
break;
}
music_play();
if(CheckStateKey(KEY_INPUT_ESCAPE)==1)break;//エスケープが入力されたらブレイク
ScreenFlip();//裏画面反映
count++;
}
DxLib_End();//DXライブラリ終了処理
return 0;
}
//説明文の読み込み
void load_txt()
{
int fh;//ファイルハンドル
char fname[256];//ファイル名
sprintf(fname , "../dat/csv/sample_%d.txt",(stage+1));
fh = FileRead_open(fname);
if(fh == NULL)
{//空だったらエラー
printfDx("read errortxt\n");
return;
}
for(int i=0 ; i < MAX_SENTENCE ; i++)
{
FileRead_gets(str[i].st , 256 , fh);//i番目のstrのポインタに(i行目の)一文を格納
//FileRead_gets(str[i].st2 , 256 , fh[1]);//i番目のstrのポインタに(i行目の)一文を格納
if(FileRead_eof( fh ) != 0)//ファイルの終わりなら
{
goto EXFILE1;//終了
}
}
EXFILE1:
FileRead_close(fh);
}
//csvと説明文のロード関数(まとめ)
void load_read()
{
load_story();
load_txt();
}
動作と、質問
実行→(1面)実行されて、自分が決めた「stage_count」になったら説明文が表示される(stages.e_flag > 0),→説明の表示が消えるとstage_countが加算されて、普通の龍神録に・・・→ラスボスを倒して、新たに追加した「boss.end_stage_flag 」たるもの0より上(フラグが立っていたら)→func_stateを99に戻して初期化から始める→2面、ここで説明文が表示されません、stage_countはしっかり指定した時間で止まります。(敵はしっかり出てきます(storyの方はしっかり読み込まれていることがわかる))
graphなどは、1面で表示されており、また、2面に移る際に各構造体の変数はmemsetで初期化されるので、同じことの繰り返しで表示されるのだと思ったので、載せませんでした。
またsprintfをやめて、しっかり固定した1つのファイルのパスをかくやり方もしました、そうすれば2面でも同じ説明文が出るはずだと・・・・・表示されませんでした・・・・
read_errorとは表示されていないので、loadはできていると思うのですが・・・・どこかおかしいと推測できる箇所はあるのでしょうか?
ちなみに「stages.e_flag 」が0より上だと説明が表示される設定になっております。(graph.cppより)