Beispiel #1
0
        // Lv4のゲームを実行するメソッド
        // 場に出すことが出来なかった時、場が保持しているカードを失点に追加し、場の数を0にリセットする。
        // そして、改めて最初のplayerとして自由な数からだす
        public void PlayGame(Player_Lv4 player, CP_Lv4 cp)
        {
            turn     = 0;
            playGame = true;
            while (playGame)
            {
                switch (turn)
                {
                // ゲーム開始場面
                case 0:
                    cp.ShowCard();
                    FieldCard(turn);
                    player.ShowCard();
                    turn = 1;
                    Line();
                    break;

                // Playerがカードを出す場面
                case 1:
                    TurnName(player);
                    player.DiscardCard();
                    player.Draw(number);
                    turn = 3;
                    break;

                // CPがカードを出す場面
                case 2:
                    cp.ThinkingTime(1);
                    cp.DiscardCard();
                    cp.Draw(number);
                    turn = 3;
                    break;

                // フィールドと手札の更新 と その後の処理
                case 3:
                    // ゲーム終了判定
                    // どちらかの手札が0枚になった時点でゲーム終了
                    if (player.card.Count == 0 || cp.card.Count == 0)
                    {
                        nextPlay = "finish";
                    }
                    // 条件分岐でどのplayerがプレーするか判断
                    if (nextPlay.Equals("player"))
                    {
                        turn = 1;
                    }
                    else if (nextPlay.Equals("cp"))
                    {
                        turn = 2;
                    }
                    else if (nextPlay.Equals("playerRestart")) // プレイヤーが場に出さないことを選択した時の処理
                    {
                        if (fieldCard.Count > 0)
                        {
                            player.AddPoint(fieldCard.Count);
                        }
                        FieldReset();
                        turn = 1;                          // 再び自分のターン
                    }
                    else if (nextPlay.Equals("cpRestart")) // CPが場に出さないこと選択した時の処理
                    {
                        if (fieldCard.Count > 0)
                        {
                            cp.AddPoint(fieldCard.Count);
                        }
                        FieldReset();
                        turn = 2; // 再び相手のターン
                    }
                    else if (nextPlay.Equals("finish"))
                    {
                        turn = 4;
                    }
                    if (fieldCard.Count > 0)
                    {
                        // 場が保持しているカードの表示
                        CountFieldCard();
                    }
                    Line();
                    cp.ShowCard();
                    FieldCard(turn);
                    player.ShowCard();
                    Line();
                    break;

                case 4:
                    // playGame = false;
                    FinishGame();
                    break;
                }
            }
            GameResult(player, cp);
            Reset(player, cp);
        }