ぷよぷよのおじゃまぷよ、相殺について

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

ぷよぷよのおじゃまぷよ、相殺について

#1

投稿記事 by white » 6年前

現在、C# + XNAにて、ぷよぷよを真似て作っています。
ゲームシステムは、ぷよぷよ通を真似ています。
自分はまだまだ、プログラミングに関しては初心者なので
いろいろなサイトを参考にしながら、
ぷよの出現、操作、連鎖、実際のスコアとほぼ同等のスコアの計算
(=連鎖した時の一時的なスコアも計算できています)
おじゃまぷよがあったらそれを落とす処理
まではできました。あとは、対人戦に対応させようと思って
1, 2Pまでの処理を書いているのですが

おじゃまぷよの相殺?の計算の考え方がよくわかりません。
自分は
計算用おじゃま変数P1, P2(それぞれ発生させた数)
確定用おじゃま変数P1, P2(それぞれ降らせる数)
を作っています。

また計算用おじゃま変数P1, P2には、連鎖が終わった時に、発生したおじゃまぷよ数を入れています。

確定用おじゃま変数は、例えばP1で考えると、計算用おじゃま変数p2がp1より大きい場合に
確定用おじゃま変数P1 = 計算用おじゃま変数P2 - 計算用おじゃま変数P1としています。


どうように、確定用おじゃま変数P2もそうしているのですが、うまく相殺ができません。
もしくは、この4つの変数だけじゃ足りないのでしょうか…。


説明下手ですいません。必要であればソースコードもあげます。
(ただ、少し長いので、どこらへんをあげればいいのか教えてもらえるとうれしいです…。)

white

Re: ぷよぷよのおじゃまぷよ、相殺について

#2

投稿記事 by white » 6年前

すいません自己解決いたしました。

方法としては、3つの変数を用意して、あとは自分に降りそうか、降らなそうかで場合分けをし
降りそうであれば、相殺する(もし余ったら相手に送る)、降らなそうであれば、そのまま相手に送る感じにしました。

コード:

 private int sendOjamaNum;  //相手に送るおじゃまぷよ数
 private int t_OjamaNum;    //自分に降ってくるおじゃまぷよ数(未確定)
 private int ojamaNum;      //自分に降ってくるおじゃまぷよ数(確定)

 //確定おじゃまぷよ数計算
        public void CalculateOjamaNum()
        {
            //もし自分におじゃまぷよが降りそうなら
            if(t_OjamaNum > 0)
            {
                //相殺
                t_OjamaNum -= sendOjamaNum;

                //相殺して、自分に降る数がマイナスになったら
                if(t_OjamaNum < 0)
                {
                    //相手におじゃまぷよをあげる
                    enemy.t_OjamaNum += -t_OjamaNum;
                    t_OjamaNum = 0;
                }
            }
            //自分におじゃまぷよが降りそうでなければ
            else
            {
                //そのままおじゃまぷよを送る
                enemy.t_OjamaNum += sendOjamaNum;
            }

            //送ったおじゃまぷよ数の初期化
            sendOjamaNum = 0;

            //自分に降る確定おじゃまぷよ数を設定
            ojamaNum = t_OjamaNum;

            //未確定のおじゃまぷよ数を初期化
            t_OjamaNum = 0;
        }

返信

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