private static void RunRound(List <Player> players) { // 각 선수가 이전 라운드에서 받은 카드를 클리어한다. foreach (Player player in players) { player.PrepareRound(); } // 딜러가 각 선수들에게 2장씩 카드를 돌린다 Dealer dealer = new Dealer(); foreach (Player player in players) { for (int i = 0; i < 2; i++) { player.AddCard(dealer.Draw()); } } Console.WriteLine($"나(Player1)의 패는 \"{players[1][0]}\", \"{players[1][1]}\" 입니다."); Console.WriteLine($"현재 BettingMoney는 \"{BetMoney}원\"입니다."); Console.WriteLine("BettingMoney를 교체하시겠습니까?"); Console.WriteLine("=> 1.Continue 2.Change BettingMoney <="); int ContinueGame = int.Parse(Console.ReadLine()); Console.WriteLine(); if (ContinueGame == 2) { Console.WriteLine("BettinMoney를 얼마로 하시겠습니까?"); int ChangeBetMoney = int.Parse(Console.ReadLine()); BetMoney = ChangeBetMoney; Console.WriteLine($"BettingMoney가 {BetMoney}원으로 변경되었습니다."); Console.WriteLine(); } foreach (Player player in players) { player.Money -= BetMoney; totalBetMoney += BetMoney; } // 각 선수들의 족보를 계산하고 출력한다. for (int i = 0; i < players.Count; i++) { Player p = players[i]; p.CalculateScore(); Console.WriteLine($"Player{i} ({p[0]}, {p[1]}) => {p.Score}"); } // 승자와 패자를 가린다.. Player winner = FindWinner(players); if (winner != null) { winner.Money += totalBetMoney; totalBetMoney = 0; } }
static void RunRound(List <Player> players) { // 각 선수가 이전 라운드에서 받은 카드를 클리어한다. foreach (Player player in players) { player.PrepareRound(); } // 선수들이 학교를 간다 int totalBetMoney = 0; foreach (Player player in players) { player.Money -= BetMoney; totalBetMoney += BetMoney; } // 딜러가 각 선수들에게 2장씩 카드를 돌린다 Dealer dealer = new Dealer(); foreach (Player player in players) { for (int i = 0; i < 2; i++) { player.AddCard(dealer.Draw()); } } // 각 선수들의 족보를 계산하고 출력한다. for (int i = 0; i < players.Count; i++) { Player p = players[i]; p.CalculateScore(); Console.WriteLine($"P{i} ({p[0]}, {p[1]}) => {p.Score}"); } // 승자와 패자를 가린다. Player winner = FindWinner(players); //TODO : 승자가 1명 이상이면 베팅 머니를 돌려주고 라운드를 끝낸다. // 승자에게 모든 베팅 금액을 준다. winner.Money += totalBetMoney; }
public static int RunRound(List <Player> players, int winnerNo) { // 각 선수가 이전 라운드에서 받은 카드를 클리어한다. foreach (Player player in players) { player.PrepareRound(); } // 이전 라운드의 승자는 이번 라운드의 베팅 배수를 결정한다. // 단, 1라운드일 경우 선을 결정하여 베팅 배수를 결정한다. string inputText = ""; int input = 0; Random random = new Random(); if (winnerNo == 0) // 사용자가 이기면 { Console.WriteLine($"P[{winnerNo}] 는 이번 라운드의 배수를 선택하세요. (1: 1배, 2: 2배, 3: 4배, 4: 8배)"); inputText = Console.ReadLine(); input = int.Parse(inputText); MultipleType multipleType = (MultipleType)input; Console.WriteLine($"P[{winnerNo}]는 {(int)multipleType}배를 선택하여 이번 판의 판돈이 {(int)multipleType}배 증가하였습니다."); } else { // 컴퓨터가 승자일 때, 컴퓨터는 결과에 상관없이 판돈의 두 배를 올린다. // Console.WriteLine($"P[{winnerNo}] 는 2배만을 선택"); input = random.Next(1, 4); MultipleType multipleType = (MultipleType)input; Console.WriteLine($"P[{winnerNo}]는 {(int)multipleType}배를 선택하여 이번 판의 판돈이 {(int)multipleType}배 증가하였습니다."); // input = 2; } // 선수들이 학교를 간다 int totalBetMoney = 0; foreach (Player player in players) { player.Money -= BetMoney * input; totalBetMoney += BetMoney * input; } // 딜러가 각 선수들에게 2장씩 카드를 돌린다 Dealer dealer = new Dealer(); foreach (Player player in players) { for (int i = 0; i < 2; i++) { player.AddCard(dealer.Draw()); } } if (winnerNo == 0) { Player p = players[winnerNo]; p.CalculateScore(); Console.WriteLine($"P{winnerNo} ({p[0]}, {p[1]}) => {p.Score}"); // 사용자의 카드의 점수가 5점 이하일 경우, 300원을 추가로 내고 새로운 카드를 뽑는다. if (p.Score <= 5) { Console.WriteLine("300원을 추가로 지불하고 첫번째 카드를 바꾸시겠습니까? (y/n)"); if (Console.ReadLine().Equals("y")) { p.ChangeCard(dealer.Draw()); p.CalculateScore(); p.Money -= 300; Console.WriteLine($"P{winnerNo}의 바꾼 카드: ({p[0]}, {p[1]}) => {p.Score}"); PrintMoney(p); } else { Console.WriteLine("카드를 변경하지 않고 게임을 진행합니다."); } } Console.WriteLine("콜 유형를 선택하세요. (1: 콜(기본), 2: 베팅(+100원 * 배수), 3: 다이(포기, 1/2만 돌려받음))"); inputText = Console.ReadLine(); input = int.Parse(inputText); callType = (CallType)input; // 숫자로 입력받은 콜 타입을 콜타입 타입으로 형변환한다. Console.WriteLine($"{callType}을 선택하셨습니다."); } else { // 컴퓨터가 이기면 콜타입을 결정한다. callType = DecideCallType(players, winnerNo); Console.WriteLine($"P[{winnerNo}]가 {callType}을 선택하였습니다."); } if (callType == CallType.Die) { Player p = players[winnerNo]; p.Money += BetMoney * input / 2; totalBetMoney -= BetMoney * input / 2; } //if ( callType == CallType.Die) //{ // foreach (Player player in players) // { // if(player.Index == winnerNo) // { // player.Money += BetMoney * input / 2; // totalBetMoney -= BetMoney * input / 2; // } // } // foreach (Player player in players) // { // if (player.Index != winnerNo) // { // player.Money += totalBetMoney / 2; // } // } //} else if (callType == CallType.Betting) { foreach (Player player in players) { player.Money -= BetMoney * input; totalBetMoney += BetMoney * input; } } // 각 선수들의 족보를 계산하고 출력한다. for (int i = 0; i < players.Count; i++) { Player p = players[i]; p.CalculateScore(); Console.WriteLine($"P{i} ({p[0]}, {p[1]}) => {p.Score}"); } // 승자와 패자를 가린다. // 승자에게 모든 베팅 금액을 준다. if (FindWinner(players).Count >= 2) // 승자가 두명이면 { int winner0 = FindWinner(players)[0]; int winner1 = FindWinner(players)[1]; players[winner0].Money += totalBetMoney / 2; // 전체 베팅머니를 반씩 나눠가진다. players[winner1].Money += totalBetMoney / 2; winnerNo = AdvancedRule.DecideOrder(players); return(winnerNo); } else { winnerNo = FindWinner(players)[0]; players[winnerNo].Money += totalBetMoney; return(winnerNo); } }
public static int RunRound(List <Player> players, int winnerNo) { // 각 선수가 이전 라운드에서 받은 카드를 클리어한다. foreach (Player player in players) { player.PrepareRound(); } // 이전 라운드의 승자는 이번 라운드의 베팅 배수를 결정한다. // 단, 1라운드일 경우 선을 결정하여 베팅 배수를 결정한다. string inputText = ""; int input = 0; if (winnerNo == 0) { Console.WriteLine($"P[{winnerNo}] 는 이번 라운드의 배수를 선택하세요. (1: 1배, 2: 2배, 4: 4배, 8: 8배)"); inputText = Console.ReadLine(); input = int.Parse(inputText); } else { Console.WriteLine($"P[{winnerNo}] 는 2배만을 선택"); input = 2; } // 선수들이 학교를 간다 int totalBetMoney = 0; foreach (Player player in players) { player.Money -= BetMoney * input; totalBetMoney += BetMoney * input; } // 딜러가 각 선수들에게 2장씩 카드를 돌린다 Dealer dealer = new Dealer(); foreach (Player player in players) { for (int i = 0; i < 2; i++) { player.AddCard(dealer.Draw()); } } if (winnerNo == 0) { Player p = players[winnerNo]; p.CalculateScore(); Console.WriteLine($"P{winnerNo} ({p[0]}, {p[1]}) => {p.Score}"); Console.WriteLine("콜 유형를 선택하세요. (1: 콜(기본), 2: 베팅(+100원 * 배수), 3: 다이(포기, 1/2만 돌려받음))"); inputText = Console.ReadLine(); input = int.Parse(inputText); callType = (CallType)input; } else { callType = DecideCallType(players, winnerNo); Console.WriteLine($"P[{winnerNo}]는 {callType}을 선택"); } if (callType == CallType.Die) { Player p = players[winnerNo]; p.Money += BetMoney * input / 2; totalBetMoney -= BetMoney * input / 2; } //if ( callType == CallType.Die) //{ // foreach (Player player in players) // { // if(player.Index == winnerNo) // { // player.Money += BetMoney * input / 2; // totalBetMoney -= BetMoney * input / 2; // } // } // foreach (Player player in players) // { // if (player.Index != winnerNo) // { // player.Money += totalBetMoney / 2; // } // } //} else if (callType == CallType.Betting) { foreach (Player player in players) { player.Money -= BetMoney * input; totalBetMoney += BetMoney * input; } } // 각 선수들의 족보를 계산하고 출력한다. for (int i = 0; i < players.Count; i++) { Player p = players[i]; p.CalculateScore(); Console.WriteLine($"P{i} ({p[0]}, {p[1]}) => {p.Score}"); } // 승자와 패자를 가린다. // 승자에게 모든 베팅 금액을 준다. if (FindWinner(players).Count >= 2) { players[FindWinner(players)[0]].Money += totalBetMoney / 2; players[FindWinner(players)[1]].Money += totalBetMoney / 2; winnerNo = AdvancedRule.DecideOrder(players); return(winnerNo); } else { winnerNo = FindWinner(players)[0]; players[winnerNo].Money += totalBetMoney; return(winnerNo); } }