Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            // ゲームの進行、管理を行う変数
            GameMaster     master  = new GameMaster();
            GameMaster_Lv2 master2 = new GameMaster_Lv2();
            GameMaster_Lv3 master3 = new GameMaster_Lv3();
            GameMaster_Lv4 master4 = new GameMaster_Lv4();
            string         name    = "player";
            // Player変数 playする人
            Player     player  = new Player(name);
            Player_Lv2 player2 = new Player_Lv2(name);
            Player_Lv3 player3 = new Player_Lv3(); // 引数なしコンストラクタの時, Nameに"player"が代入
            Player_Lv4 player4 = new Player_Lv4();
            // 対戦相手 CPの変数
            CP     cp  = new CP();
            CP_Lv2 cp2 = new CP_Lv2();
            CP_Lv3 cp3 = new CP_Lv3();
            CP_Lv4 cp4 = new CP_Lv4();

            while (true)
            {
                Console.Write("遊ぶゲームレベルを入力 : ");
                int lv = int.Parse(Console.ReadLine());
                if (lv == 0)
                {
                    break;
                }
                else if (lv > 4)
                {
                    Console.WriteLine("正しい値を入力してください");
                }
                Line();
                switch (lv)
                {
                case 1:
                    // カードの生成
                    master.MakeCard(10);
                    // 引数のインスタンス変数に生成したカードを配布
                    master.DistributeCard(player, cp);
                    // ゲームの実行
                    master.PlayGame(player, cp);
                    break;

                case 2:
                    // カードの生成
                    master2.MakeCard(10);
                    // カードの配布
                    master2.DistributeCard(player2, cp2);
                    // Lv2のゲーム実行
                    master2.PlayGame(player2, cp2);
                    break;

                case 3:
                    // カードの生成 1~10のカードを各2枚生成
                    master3.MakeCard(10);
                    // カードの配布 一人あたり6枚の手札
                    master3.DistributeCard(player3, cp3, 6);
                    // Lv3のゲーム実行
                    master3.PlayGame(player3, cp3);
                    break;

                case 4:
                    master4.MakeCard(10);
                    master4.DistributeCard(player4, cp4, GameMaster.number);
                    master4.PlayGame(player4, cp4);
                    break;
                }
            }
        }
Ejemplo n.º 2
0
        // Lv2のゲームを実行するメソッド
        public void PlayGame(Player_Lv2 player, CP_Lv2 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();
                    turn = 3;
                    break;

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

                // フィールドと手札の更新 と その後の処理
                case 3:
                    // ゲーム終了判定
                    // どちらかの手札が0枚になった時点でゲーム終了
                    // 両方とも出すことが出来ない状態の時
                    if (player.card.Count == 0 || cp.card.Count == 0 ||
                        player.skipNum == 0 || cp.skipNum == 0)
                    {
                        nextPlay = "finish";
                    }
                    // 条件分岐でどのplayerがプレーするか判断
                    if (nextPlay.Equals("player"))
                    {
                        turn = 1;
                    }
                    else if (nextPlay.Equals("cp"))
                    {
                        turn = 2;
                    }
                    else if (nextPlay.Equals("playerSkip")) // プレイヤーがskipを利用した時の処理
                    {
                        if (fieldCard.Count > 0)
                        {
                            player.Skip(fieldCard.Count);
                        }
                        FieldReset();
                        turn = 2;
                    }
                    else if (nextPlay.Equals("cpSkip")) // CPがskipを利用した時
                    {
                        if (fieldCard.Count > 0)
                        {
                            cp.Skip(fieldCard.Count);
                        }
                        FieldReset();
                        turn = 1;
                    }
                    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);
        }