ページ 11

残機をある地点で増やす方法

Posted: 2010年6月30日(水) 03:18
by gdu
弾幕シューでスコアがある地点まで行ったら
残機を増やす方法がわからなく困っています。
(下が実際書いたものです)


//スコアが10000点を超えたら残機をひとつ増やす
if(ch.score>10000){
ch.num++;}

これで実行すると10000こえたら一応残機が増えるのですが
ひとつではなく無限大に増えていってしまいます。

「>」を「=」に変えて見ると今度はスコアが最初から10000で以後ずっとスコアが
10000から変わらなくなってしまいます。

どうしたらひとつだけ増やせますか?

Re:残機をある地点で増やす方法

Posted: 2010年6月30日(水) 03:42
by y
スコアが増えていくということは、必ず10000未満から10000以上になるときの境界線があるはずです。
例えばスコアアイテムを取った瞬間など、「前は10000未満だったけど、今加算したら10000以上になった」
といった風に条件を仕込むと、1度だけ増やせます。

Re:残機をある地点で増やす方法

Posted: 2010年6月30日(水) 05:44
by toyo
残機増加用に変数を増やしてもいいと思います
初期化時に
ch.numup = 10000;
として
if (ch.score > ch.numup ) {
ch.num++;
ch.numup *= 2; //例として次は2倍の点数で増える
}

ch.score = 10000は値を代入しているので当然ch.scoreは10000になりますね
C、C++での比較は == とイコール2個です

Re:残機をある地点で増やす方法

Posted: 2010年6月30日(水) 09:24
by シエル
一万点になった時
if(ch.score==10000)
ch.num++;

一万点以降(一万で割り消れたら1増やす)
if(ch.score>10000 && ch.score%10000==0)
ch.num++


こんな感じでしょうか?

追記:
すいません。この方法はスコアが1点ずつ増えることしか考えてません。
あと、スコアが増えたときに、この関数を呼び出すということが前提です。 画像

Re:残機をある地点で増やす方法

Posted: 2010年6月30日(水) 12:17
by パコネコ
ちょっと面倒だけどスコアと一緒に増えるものを作っておいてその値が10000を超えたら残機を増やすのはどうですか?その増えるやつは残機が増えたときに0に戻してあげれば何回でも使えますよ…わかりずらいですね。

ch.scoreが増えるときkeikentiも同じ数増やす。
if(敵を倒したときとか){
ch.score++;
keikenti++;//付け足す
}
if(10000<keikenti){
ch.num++;
keikenti=0;
}
こんな感じ
でもスコアが増えるタイミングが多いならお勧めしない
書くのが面倒だから。変数が一つ増えてしまいますし…
でもこれもありだと思う

Re:残機をある地点で増やす方法

Posted: 2010年6月30日(水) 12:22
by パコネコ
すいませんよく読んでみると1度だけでしたね。
それなら残機が増える条件を増やせばできるはず…
/*
//スコアが10000点を超えたら残機をひとつ増やす
if(ch.score>10000){
ch.num++;}
*/
if(ch.score>10000 && a==0){
ch.num++;
a++;
}
aは何でもいいです
思いつかなかったので…これも変数が増えてしまいますが、ここ以外に使わないのでいいですよね?
これでaの値を触らなければ1度しか増えません

Re:残機をある地点で増やす方法

Posted: 2010年7月01日(木) 01:20
by gdu
皆さん返答ありがとうございます。

いろいろと試した結果新たに変数をつくり
指定した点数まで行ったら残機を増やす方法が一番
わかりやすかったので、
今回はtoyoさんが書いたのを元に作成することにしました。

他の皆さんが書いてくれた物もどこかで参考にしたいと思います。


問題が解決できたので解決!にしておきます。

画像