Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
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;
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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);
            }
        }