トップページ > 過去ログ > 記事閲覧
自機の弾の関数を整理したが、うまくいかない
名前:未熟者Y 日時: 2006/11/23 02:21

ご無沙汰です。 また問題が起きたので質問させていただきます。 元々void Jitama2Move()とvoid Jitama2Move2()の2つの関数を使って2WAY弾を出していたのですが、 1つの関数にまとめてやろうとしてうまくいきませんでした。 やりたい事 弾を画面内に出せる最大数6を上段と下段に分ける iが奇数の時弾上段発射(3発まで) iが偶数の時弾下段発射(3発まで) 現在の問題点 弾が期待通りに動かない 最初に弾を発射すると何発かは画面上部を飛ぶ(以後飛ばない) 上段の弾は1発だけ飛ぶ 下段の弾は出てすぐ消える 以下ソース void Jitama2Move(){ //弾の発射 int key = GetJoypadInputState(DX_INPUT_KEY_PAD1); if((key & PAD_INPUT_X) && (trigger == 0)){ for(int i=0; i<6; i++){ if (ji2tama[i].life == 0){ ji2tama[i].life = 1; if((i %= 2) == 1){ ji2tama[i].x = jikidata.x+32; ji2tama[i].y = jikidata.y+20; } if((i %= 2) == 0){ ji2tama[i].x = jikidata.x+32; ji2tama[i].y = jikidata.y+30; } PlaySoundMem(j2beamwav, DX_PLAYTYPE_BACK); break; } } trigger = 5; } if(trigger>0) trigger = trigger - 1; //弾の移動 for(int i=0; i<6; i++){ if(ji2tama[i].life > 0){ ji2tama[i].x = ji2tama[i].x + idouryou[15]; //idouryouで弾速調整 DrawGraph(ji2tama[i].x,ji2tama[i].y,*(ji2tama[i].ghandle),TRUE); //画面外に出た時の処理 if(ji2tama[i].x>640) ji2tama[i].life = 0; } } } if文の条件式(if((i %= 2) == 1)とif((i %= 2) == 0))の使い方が間違っていると思いますが、 どう直したら期待通りに動くか分からないのでアドバイスをいただけるとうれしいです。

Page: 1 |

Re: 自機の弾の関数を整理したが、うまくいかない ( No.1 )
名前:お父さん 日時:2006/11/23 02:17

for ループの中の条件判断で、if((i %= 2) == 1)となっていますが、こうすると、iは、いつでも0か1に変わ ってしまうのでループがうまく回らないのではないでしょうか。ここは、if((i % 2) == 1)とすべきではないか と思いますが。 プログラムを詳しく分析せずにレスするのも失礼かと思いましたが、リストを拝見させて頂いてこの個所が気にな りましたので、ひょっとしたらということでご検討ください。
Re: 自機の弾の関数を整理したが、うまくいかない ( No.2 )
名前:未熟者Y 日時:2006/11/23 02:40

お父さんさん、こんな遅い時間にアドバイスありがとうございます。 おかげでまとめる前と同じ動きをするようになりました。 しかし、言われてみればまた初歩的な所で勘違いしてました。 まだまだ未熟者のようです。

Page: 1 |