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; } } }
// 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); }