// カードの配布 public void DistributeCard(Player_Lv4 player, CP_Lv4 cp, List <int> number) { // 各プレイヤーが保持するカード player.card = new List <int>(); cp.card = new List <int>(); DistributionTarget(player.card); DistributionTarget(cp.card); // Console.WriteLine(number.Count + "マイ"); }
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; } } }
// 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); }