2面作成にあたって
Re:2面作成にあたって
う~ん、2面を作ることについて、
何かの変数を少しいじればいいだけというわけにはいかないので、ここで全てあげることはできませんが、
一つ一つの処理の意味を考えていけば自ずと作り方が分かるのではないかと思います。
また、もう少し質問が具体的だと回答が得られやすいと思います。
そうですね~、とりあえずどこを変更すればいいのかを考え、わからないことが出てきたらその都度そこを限定して質問されてはいかがでしょうか?
何かの変数を少しいじればいいだけというわけにはいかないので、ここで全てあげることはできませんが、
一つ一つの処理の意味を考えていけば自ずと作り方が分かるのではないかと思います。
また、もう少し質問が具体的だと回答が得られやすいと思います。
そうですね~、とりあえずどこを変更すればいいのかを考え、わからないことが出てきたらその都度そこを限定して質問されてはいかがでしょうか?
Re:2面作成にあたって
さっそく分からないことがあったので教えてください><
2面に移行するときに次のうち、必ず初期化するべきものってどれなんでしょうか?
memset(&ch,0,sizeof(ch_t));
memset(&bom,0,sizeof(bom_t));
memset(&bright_set,0,sizeof(bright_set_t));
memset(&dn,0,sizeof(dn_t));
memset(&boss,0,sizeof(boss_t));
memset(&stage_title,0,sizeof(stage_title_t));
memset(&area,0,sizeof(area_t));//(48)
memset(&boss_shot,0,sizeof(boss_shot_t));
memset(option_bb,0,sizeof(option_bb_t)*2);//(49)
memset(enemy,0,sizeof(enemy_t)*ENEMY_MAX);
memset(lazer,0,sizeof(lazer_t)*LAZER_MAX);
memset(enemy_order,0,sizeof(enemy_order_t)*ENEMY_ORDER_MAX);
memset(shot,0,sizeof(shot_t)*SHOT_MAX);
memset(cshot,0,sizeof(cshot_t)*CSHOT_MAX);
memset(effect,0,sizeof(effect_t)*EFFECT_MAX);
memset(del_effect,0,sizeof(del_effect_t)*DEL_EFFECT_MAX);
memset(child,0,sizeof(child_t)*CHILD_MAX);
memset(item,0,sizeof(item_t)*ITEM_MAX);
2面に移行するときに次のうち、必ず初期化するべきものってどれなんでしょうか?
memset(&ch,0,sizeof(ch_t));
memset(&bom,0,sizeof(bom_t));
memset(&bright_set,0,sizeof(bright_set_t));
memset(&dn,0,sizeof(dn_t));
memset(&boss,0,sizeof(boss_t));
memset(&stage_title,0,sizeof(stage_title_t));
memset(&area,0,sizeof(area_t));//(48)
memset(&boss_shot,0,sizeof(boss_shot_t));
memset(option_bb,0,sizeof(option_bb_t)*2);//(49)
memset(enemy,0,sizeof(enemy_t)*ENEMY_MAX);
memset(lazer,0,sizeof(lazer_t)*LAZER_MAX);
memset(enemy_order,0,sizeof(enemy_order_t)*ENEMY_ORDER_MAX);
memset(shot,0,sizeof(shot_t)*SHOT_MAX);
memset(cshot,0,sizeof(cshot_t)*CSHOT_MAX);
memset(effect,0,sizeof(effect_t)*EFFECT_MAX);
memset(del_effect,0,sizeof(del_effect_t)*DEL_EFFECT_MAX);
memset(child,0,sizeof(child_t)*CHILD_MAX);
memset(item,0,sizeof(item_t)*ITEM_MAX);
Re:2面作成にあたって
もう一つ質問です。 2面用のstoryH1を読み込むには どうしたらいいのでしょうか? //敵の出現情報をエクセルから読み込んで格納する関数 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=input=FileRead_getc(fp);//1文字取得する if(inputc=='/'){//スラッシュがあれば while(FileRead_getc(fp)!='\n');//改行までループ i=-1;//カウンタを最初に戻して continue; } if(input==',' || input=='\n'){//カンマか改行なら inputc='\0';//そこまでを文字列とし break; } if(input==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:2面作成にあたって
えぇとまず初期化しないといけないものですが
memset(&ch,0,sizeof(ch_t));
これって自機のデータですよね。
自機の残り残機数などもここに含まれるのでは無いでしょうか?
ということは、2面になると残機数がリセットされるような仕様では無い限りまずいのでは?
memset(&bom,0,sizeof(bom_t));
残りボム使用回数などをここに持たせていないのなら初期化しても大丈夫かと。
後のはざっと見た感じ大丈夫なのでは無いかと思います。
要はデータを2面に引き継ぎたいものを初期化しなければいいのです。
スコアデータとか、アイテム取得数とか、残機数とか・・。
敵を倒した回数みたいな要素を追加したとしたらそういうのも初期化するべきではないでしょう。
初期化しないものはしないものでまとめて、
後はすっきり初期化できるようにプログラムを組んだ方がいいかもしれませんね。
後、1面から2面に変わるとき一瞬画面が暗くなると言う事は無いと思いますよ。
1面の終わりで画像データを解放し、2面にさしかかるときにロードしているとすれば、
その間の1フレームは画像データが無いことになるので(しかもロード中は真っ暗)、
そういう意味で暗いのではないでしょうか?
画像を解放し、かつ暗くしない方法としては「画面を消さない」かもしくは
「解放する前の画面をキャプチャして保存し、それを描画し続ける」とかでしょうか。
どのような構造でプログラムを組まれているかわかりませんが・・。
memset(&ch,0,sizeof(ch_t));
これって自機のデータですよね。
自機の残り残機数などもここに含まれるのでは無いでしょうか?
ということは、2面になると残機数がリセットされるような仕様では無い限りまずいのでは?
memset(&bom,0,sizeof(bom_t));
残りボム使用回数などをここに持たせていないのなら初期化しても大丈夫かと。
後のはざっと見た感じ大丈夫なのでは無いかと思います。
要はデータを2面に引き継ぎたいものを初期化しなければいいのです。
スコアデータとか、アイテム取得数とか、残機数とか・・。
敵を倒した回数みたいな要素を追加したとしたらそういうのも初期化するべきではないでしょう。
初期化しないものはしないものでまとめて、
後はすっきり初期化できるようにプログラムを組んだ方がいいかもしれませんね。
後、1面から2面に変わるとき一瞬画面が暗くなると言う事は無いと思いますよ。
1面の終わりで画像データを解放し、2面にさしかかるときにロードしているとすれば、
その間の1フレームは画像データが無いことになるので(しかもロード中は真っ暗)、
そういう意味で暗いのではないでしょうか?
画像を解放し、かつ暗くしない方法としては「画面を消さない」かもしくは
「解放する前の画面をキャプチャして保存し、それを描画し続ける」とかでしょうか。
どのような構造でプログラムを組まれているかわかりませんが・・。
Re:2面作成にあたって
>2面に移行するときに次のうち、必ず初期化するべきものってどれなんでしょうか?
この質問がでるということは各構造体や変数の役割を把握していない、
ということになります。
まぁなんとなく動けばそれでいいのかもしれませんが、ここはじっくりと腰を据えて
構造体や変数の役割や意味、それがどこでどう使われているのかを把握することに
努めた方がいいのではないでしょうか。
そこが把握できればこの問題は解決したも同然ですし、後々の修正や改良が
し易くなると思います。
Re:2面作成にあたって
一日中考えた結果、
無事、自己解決しました。
一瞬画面が暗くなる原因は
func_stateに新しく200を新規で作成して、そこで新しい処理を追加してたので原因でした。
ただ、一つだけ解決できなかったことがあるのですが、
音楽のfadeoutってどうやるのでしょうか?
1面終了時に実装してみようと思いましたが、SEと違って
ChangeVolumeSoundMem( 32, sound_se[0] ) ;
みたいに音量自体、設定もできないので困ってます。
無事、自己解決しました。
一瞬画面が暗くなる原因は
func_stateに新しく200を新規で作成して、そこで新しい処理を追加してたので原因でした。
ただ、一つだけ解決できなかったことがあるのですが、
音楽のfadeoutってどうやるのでしょうか?
1面終了時に実装してみようと思いましたが、SEと違って
ChangeVolumeSoundMem( 32, sound_se[0] ) ;
みたいに音量自体、設定もできないので困ってます。