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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
gdu

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

#1

投稿記事 by gdu » 15年前

弾幕シューでスコアがある地点まで行ったら
残機を増やす方法がわからなく困っています。
(下が実際書いたものです)


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

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

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

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

y

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

#2

投稿記事 by y » 15年前

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

toyo

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

#3

投稿記事 by toyo » 15年前

残機増加用に変数を増やしてもいいと思います
初期化時に
ch.numup = 10000;
として
if (ch.score > ch.numup ) {
ch.num++;
ch.numup *= 2; //例として次は2倍の点数で増える
}

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

シエル

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

#4

投稿記事 by シエル » 15年前

一万点になった時
if(ch.score==10000)
ch.num++;

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


こんな感じでしょうか?

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

パコネコ

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

#5

投稿記事 by パコネコ » 15年前

ちょっと面倒だけどスコアと一緒に増えるものを作っておいてその値が10000を超えたら残機を増やすのはどうですか?その増えるやつは残機が増えたときに0に戻してあげれば何回でも使えますよ…わかりずらいですね。

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

パコネコ

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

#6

投稿記事 by パコネコ » 15年前

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

gdu

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

#7

投稿記事 by gdu » 15年前

皆さん返答ありがとうございます。

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

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


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

画像

閉鎖

“C言語何でも質問掲示板” へ戻る