ページ 1 / 1
自機ショットのことで
Posted: 2008年8月30日(土) 16:35
by pooka
はじめまして。いつも「なるほど」と思いながら見せていただいてます。
早速なのですが、龍神録プログラミングの館の17章をみて自機にショットを撃たせることは出来ました。
そこで、ショットキーを1回押すと弾を数発撃つようにしたいと思い色々考えたのですがどうしてもうまくいきません。
ショット登録部の部分をfor文を使って、撃たせたい弾の数だけループさせればいいのかなと思ったのですが・・・もしかすると見当違いかもしれません。
どうすればいいのか教えていただけないでしょうか?
c言語は大学で習ったり独学で勉強したのでちょっと使える程度です。
環境はvistaでVisual Studio 2008を使ってます。
Re:自機ショットのことで
Posted: 2008年8月30日(土) 18:00
by array
確かすでに、4発同時発射になっているので、
四聖龍神録と同じように一度ショットキーを押したらしばらく自動でショットを打ち続ける様な動作にしたいという事ですかね。
enter_shot()
で自機ショットの登録をしており、if(CheckStatePad(configpad.shot)>0)が押された時に登録されていますよね。
このif文に追加してやれば良いです。
//ショット登録部
void enter_shot(){
//ショットボタンが押されていたら
if(CheckStatePad(configpad.shot)>0 || (ch.shot_cnt != 0 && ch.shot_cnt < 18)){
ch.shot_cnt++;
if(ch.shot_cnt%3==0){//3カウントに1回
if(CheckStatePad(configpad.slow)>0)//低速移動中なら
ch1_shot_pattern();
else
ch0_shot_pattern();
}
if(ch.shot_cnt == 18)
ch.shot_cnt = 0;
}
}
こんな感じでいけると思います。
ショットが一度押されたら、18カウントは登録し続けます。
ちなみにfor文では、弾は1つしか描画されてないように見えますが、for文で繰り返した回数分、重なって描画されてしまうので、当り判定などで思わぬ不具合につながる可能性が出てくると思います。
Re:自機ショットのことで
Posted: 2008年8月30日(土) 18:24
by pooka0904
早速の回答ありがとうございます。今実行してみたらうまくいきました。
ずっと悩んでいたので助かりました(>_<)
for文での動作も書いていただき、より理解が深まりました。
また質問するかもしれませんが、その時はよろしくお願いします。m(_ _)m
Re:自機ショットのことで
Posted: 2008年8月30日(土) 18:26
by 管理人
arrayさんが既に完璧なお答えをされているので、全く私が言うことはありませんm(_ _;)m
そういえばch.shot_cntの説明をどこにも書いてなかったような気がしますが、
どこかにこの変数がこれの為に用意されていること、書いてありました?
すっかり館のコードを使いこなしてくださっているようで光栄です^^;
Re:自機ショットのことで
Posted: 2008年8月30日(土) 18:39
by pooka
>pooka0904
すいません。名前間違ってしまいました。(^^ゞ
>管理人さん
はじめまして。いつもこのサイトを見て勉強させてもらってます。m(_ _)m
私はch.shot_cntの使い方をよく理解していなかったですね(汗)