コード例 #1
0
        public Odds RunTrails(int NumberOfTrails)
        {
            int         x, n, missingCardsOnStreet = 5 - street.Count;
            int         wins = 0, loses = 0, draws = 0, result;
            FastWinCalc winCalc = new FastWinCalc();
            Card        NewCard = new Card(0);
            List <Card> trailStreet = new List <Card>(), opponantTrailCards = new List <Card>(), CardsInPlay, aiTrailCards;

            for (x = 0; x < NumberOfTrails; x++)
            {
                trailStreet = new List <Card>(street);
                CardsInPlay = street.Concat(aiHand).ToList();

                for (n = 0; n < missingCardsOnStreet; n++)
                {
                    NewCard = new Card(CardsInPlay);
                    CardsInPlay.Add(NewCard);
                    trailStreet.Add(NewCard);
                }

                aiTrailCards       = aiHand.Concat(trailStreet).ToList();
                opponantTrailCards = trailStreet;

                for (n = 0; n < 2; n++)
                {
                    NewCard = new Card(CardsInPlay);
                    CardsInPlay.Add(NewCard);
                    opponantTrailCards.Add(NewCard);
                }

                //forced to add to opponent hand
                //opponantTrailCards.Add(new Card(Suit.Diamonds, Rank.King));
                //opponantTrailCards.Add(new Card(Suit.Diamonds, Rank.Ace));

                result = winCalc.WhoWins(aiTrailCards, opponantTrailCards);

                if (result == 1)
                {
                    loses++;
                }
                else if (result == -1)
                {
                    wins++;
                }
                else
                {
                    draws++;
                }

                CardsInPlay.Clear();
                opponantTrailCards.Clear();
                aiTrailCards.Clear();
            }

            Odds Results = new Odds((double)wins / (double)NumberOfTrails * 100,
                                    (double)loses / (double)NumberOfTrails * 100,
                                    (double)draws / (double)NumberOfTrails * 100);

            PrintResults(Results);

            return(Results);
        }
コード例 #2
0
        static void Main()
        {
            FastWinCalc   WinCalc1 = new FastWinCalc();
            WinConditions winCalc2 = new WinConditions();
            List <Card>   player1Cards = new List <Card>(), player2Cards = new List <Card>(), Street = new List <Card>(), CardsInPlay = new List <Card>();
            Card          NewCard;
            List <Player> players = new List <Player>()
            {
                new Player(0, 1000), new Player(1, 1000)
            };
            WinCalcVsWinCalc functions = new WinCalcVsWinCalc();

            int resultWinCalc1;
            int resultWinCalc2;
            int counter = 0;

            while (true)
            {
                counter++;
                if (counter % 1000 == 0)
                {
                    Console.WriteLine("Counter: " + counter);
                }
                //if (players[0].Cards.Count < 7 && players[1].Cards.Count < 7 && player1Cards.Count < 7 &&) {
                //    Console.WriteLine("FEJL");
                //    Console.ReadKey();
                //}
                players[0].Cards.Clear();
                players[1].Cards.Clear();
                player1Cards.Clear();
                player2Cards.Clear();
                Street.Clear();
                CardsInPlay.Clear();


                for (int x = 0; x < 2; x++)
                {
                    NewCard = new Card(CardsInPlay);
                    CardsInPlay.Add(NewCard);
                    player1Cards.Add(NewCard);
                }

                for (int x = 0; x < 2; x++)
                {
                    NewCard = new Card(CardsInPlay);
                    CardsInPlay.Add(NewCard);
                    player2Cards.Add(NewCard);
                }


                for (int x = 0; x < 5; x++)
                {
                    NewCard = new Card(CardsInPlay);
                    CardsInPlay.Add(NewCard);
                    Street.Add(NewCard);
                }

                Player resultWinCalc2Player;
                players[0].Cards = new List <Card>(player1Cards.Concat(Street).ToList());
                players[1].Cards = new List <Card>(player2Cards.Concat(Street).ToList());
                players[0].Cards.Sort();
                players[1].Cards.Sort();
                players[0].Score = winCalc2.Evaluate(players[0].Cards);
                players[1].Score = winCalc2.Evaluate(players[1].Cards);

                if (players[0].Score == players[1].Score)
                {
                    resultWinCalc1 = WinCalc1.WhoWins(players[0].Cards, players[1].Cards);
                    winCalc2.GiveScoreHand(players[0]);
                    winCalc2.GiveScoreHand(players[1]);
                    resultWinCalc2Player = winCalc2.WhoWins(players[0], players[1]);
                    if (resultWinCalc2Player == null)
                    {
                        resultWinCalc2 = 0;
                    }
                    else if (resultWinCalc2Player.Id == 0)
                    {
                        resultWinCalc2 = -1;
                    }
                    else
                    {
                        resultWinCalc2 = 1;
                    }
                    if (resultWinCalc1 != resultWinCalc2)
                    {
                        for (int j = 0; j <= players[0].ScoreHand.Count - 1; j++)
                        {
                            Console.WriteLine("Players Cards:" + players[0].ScoreHand[j].Rank + " " + players[0].ScoreHand[j].Suit);
                        }
                        Console.WriteLine("");
                        for (int j = 0; j <= players[1].ScoreHand.Count - 1; j++)
                        {
                            Console.WriteLine("Players Cards:" + players[1].ScoreHand[j].Rank + " " + players[1].ScoreHand[j].Suit);
                        }
                        Console.WriteLine("");
                        Console.WriteLine("player1 hand: " + player1Cards[0].Suit + player1Cards[0].Rank + " " + player1Cards[1].Suit + player1Cards[1].Rank);
                        Console.WriteLine("Street  hand: " + Street[0].Suit + Street[0].Rank + " " + Street[1].Suit + Street[1].Rank + " " + Street[2].Suit + Street[2].Rank + " " + Street[3].Suit + Street[3].Rank + " " + Street[4].Suit + Street[4].Rank);
                        Console.WriteLine("player2 hand: " + player2Cards[0].Suit + player2Cards[0].Rank + " " + player2Cards[1].Suit + player2Cards[1].Rank);
                        Console.WriteLine("\nWinCon1: " + resultWinCalc1);
                        Console.WriteLine("WinCon2: " + resultWinCalc2);
                        Console.WriteLine("\nScore: " + players[0].Score);
                        Console.ReadKey();
                    }
                }
            }
        }
コード例 #3
0
        public Odds RunTrails(int NumberOfTrails, List <List <Card> > Range)
        {
            int         x, n, missingCardsOnStreet = 5 - street.Count;
            int         wins = 0, loses = 0, draws = 0, result;
            FastWinCalc winCalc = new FastWinCalc();
            Card        NewCard = new Card(0);
            List <Card> trailStreet = new List <Card>(), opponantTrailCards = new List <Card>(), CardsInPlay, aiTrailCards;
            int         RangeSize;

            RangeSize = Range.Count();

            for (x = 0; x < NumberOfTrails; x++)
            {
                trailStreet = new List <Card>(street);
                CardsInPlay = street.Concat(aiHand).ToList();

                for (n = 0; n < missingCardsOnStreet; n++)
                {
                    NewCard = new Card(CardsInPlay);
                    CardsInPlay.Add(NewCard);
                    trailStreet.Add(NewCard);
                }

                aiTrailCards       = aiHand.Concat(trailStreet).ToList();
                opponantTrailCards = trailStreet;

                if (RangeSize > 1)
                {
                    x = rndNr.Next(RangeSize);

                    opponantTrailCards.Add(Range[x][0]);
                    opponantTrailCards.Add(Range[x][1]);
                }
                else
                {
                    opponantTrailCards.Add(Range[0][0]);
                    opponantTrailCards.Add(Range[0][1]);
                }


                result = winCalc.WhoWins(aiTrailCards, opponantTrailCards);

                if (result == 1)
                {
                    loses++;
                }
                else if (result == -1)
                {
                    wins++;
                }
                else
                {
                    draws++;
                }

                CardsInPlay.Clear();
                opponantTrailCards.Clear();
                aiTrailCards.Clear();
            }

            Odds Results = new Odds((double)wins / (double)NumberOfTrails * 100,
                                    (double)loses / (double)NumberOfTrails * 100,
                                    (double)draws / (double)NumberOfTrails * 100);

            PrintResults(Results);

            return(Results);
        }
コード例 #4
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            List <Player> players = new List <Player>()
            {
                new Player(0, 1000), new Player(1, 1000)
            };
            int           NumberOfCards = 5, TAELLER = 0;
            WinConditions w = new WinConditions();
            int           flush = 0, straight = 0, royalflush = 0, straightflush = 0, four = 0, fullhouse = 0, three = 0, twopair = 0, pair = 0;
            int           wins = 0, loss = 0, draw = 0, result = 0;
            Stopwatch     stopWatch = new Stopwatch();
            string        path      = System.Windows.Forms.Application.StartupPath + "Dataset_1.txt";
            List <string> PrintFile = new List <string>();

            stopWatch.Start();
            FastWinCalc fw       = new FastWinCalc();
            List <Card> allcards = new List <Card>();

            do
            {
                #region problems
                players[0].Cards.Clear();
                players[1].Cards.Clear();
                allcards.Clear();
                for (int i = 0; i < NumberOfCards; i++)
                {
                    allcards.Add(new Card(allcards));
                }
                players[0].Cards.Add(new Card(Suit.Diamonds, Rank.King));
                players[0].Cards.Add(new Card(Suit.Spades, Rank.Ace));
                players[0].Cards.Add(allcards[0]);
                players[0].Cards.Add(allcards[1]);
                players[0].Cards.Add(allcards[2]);
                players[0].Cards.Add(allcards[3]);
                players[0].Cards.Add(allcards[4]);
                players[1].Cards.Add(allcards[0]);
                players[1].Cards.Add(allcards[1]);
                players[1].Cards.Add(allcards[2]);
                players[1].Cards.Add(allcards[3]);
                players[1].Cards.Add(allcards[4]);
                players[1].Cards.Add(new Card(Suit.Hearts, Rank.King));
                players[1].Cards.Add(new Card(Suit.Hearts, Rank.Ace));


                players[0].Score = w.Evaluate(players[0].Cards);
                players[1].Score = w.Evaluate(players[1].Cards);
                w.GiveScoreHand(players[0]);
                w.GiveScoreHand(players[1]);
                if (w.WhoWins(players[0], players[1]) == null)
                {
                    draw++;
                }
                else if (w.WhoWins(players[0], players[1]).Id == 0)
                {
                    wins++;
                }
                else
                {
                    loss++;
                }
                //if (result == -1) {
                //    wins++;
                //}else if (result == 0) {
                //    draw++;
                //} else if (result == 1) {
                //    loss++;
                //}
                TAELLER++;
                #endregion
                #region new card test
                //players[0].Cards.Add(new Card(Suit.Hearts, (Rank)8));
                //players[0].Cards.Add(new Card(Suit.Clubs, (Rank)8));
                //players[0].Cards.Add(new Card(Suit.Diamonds, (Rank)8));
                //players[0].Cards.Add(new Card(Suit.Clubs, Rank.Ace));
                //players[0].Cards.Add(new Card(Suit.Hearts, Rank.Ace));
                //players[0].Cards.Add(new Card(Suit.Diamonds, Rank.Queen));
                //players[0].Cards.Add(new Card(Suit.Diamonds, Rank.King));

                //players[1].Cards.Add(new Card(Suit.Hearts, (Rank)8));
                //players[1].Cards.Add(new Card(Suit.Clubs, (Rank)8));
                //players[1].Cards.Add(new Card(Suit.Diamonds, (Rank)8));
                //players[1].Cards.Add(new Card(Suit.Diamonds, Rank.Ace));
                //players[1].Cards.Add(new Card(Suit.Hearts, Rank.Ace));
                //players[1].Cards.Add(new Card(Suit.Diamonds, Rank.King));
                //players[1].Cards.Add(new Card(Suit.Clubs, Rank.King));


                //players[0].Cards.Sort();
                //players[1].Cards.Sort();
                //TAELLER++;
                ////for (int j = 0; j < players[0].Cards.Count; j++) {
                ////    Console.WriteLine("Players Cards:" + players[0].Cards[j].Rank + " " + players[0].Cards[j].Suit);
                ////}
                //Console.WriteLine("");

                //players[0].Score = w.Evaluate(players[0].Cards);
                //players[1].Score = w.Evaluate(players[1].Cards);
                //Console.WriteLine("player score: " + players[0].Score);

                //w.GiveScoreHand(players[0]);
                //w.GiveScoreHand(players[1]);
                //if (w.WhoWins(players[0], players[1]) != null) {
                //    Console.WriteLine("winner is: " + w.WhoWins(players[0], players[1]).Id);
                //} else {
                //    Console.WriteLine("Draw");
                //}
                #endregion
            } while (TAELLER != 10000);

            Console.WriteLine("Wins: " + wins);
            Console.WriteLine("Loss: " + loss);
            Console.WriteLine("Draw: " + draw);

            //Console.WriteLine("Wins: " + wins/1000);
            //Console.WriteLine("Loss: " + loss/1000);
            //Console.WriteLine("Draw: " + draw/1000);

            //PrintFile.Add("Tid" + stopWatch.ElapsedMilliseconds.ToString());
            //PrintFile.Add("TÆLLER: " + TAELLER.ToString());
            //PrintFile.Add("royalflush: " + royalflush.ToString());
            //PrintFile.Add("straightflush: " + straightflush.ToString());
            //PrintFile.Add("four: " + four.ToString());
            //PrintFile.Add("fullhouse: " + fullhouse.ToString());
            //PrintFile.Add("flush: " + flush.ToString());
            //PrintFile.Add("straight: " + straight.ToString());
            //PrintFile.Add("three: " + three.ToString());
            //PrintFile.Add("twopair: " + twopair.ToString());
            //PrintFile.Add("pair: " + pair.ToString());

            //File.WriteAllLines(path, PrintFile);



            //Console.WriteLine("Time: " + stopWatch.ElapsedMilliseconds.ToString());
            //stopWatch.Stop();
            //Console.WriteLine("TÆLLER: " + TAELLER);
            //Console.WriteLine("royalflush: " + royalflush);
            //Console.WriteLine("straightflush: " + straightflush);
            //Console.WriteLine("four: " + four);
            //Console.WriteLine("fullhouse: " + fullhouse);
            //Console.WriteLine("flush: " + flush);
            //Console.WriteLine("straight: " + straight);
            //Console.WriteLine("three: " + three);
            //Console.WriteLine("twopair: " + twopair);
            //Console.WriteLine("pair: " + pair);

            //for (int j = 0; j <= players[0].ScoreHand.Count - 1; j++) {
            //    Console.WriteLine("Players Cards:" + players[0].ScoreHand[j].Rank + " " + players[0].ScoreHand[j].Suit);
            //}
            //Console.WriteLine("Done!");
            //for (int j = 0; j <= players[1].ScoreHand.Count - 1; j++) {
            //    Console.WriteLine("Players Cards:" + players[1].ScoreHand[j].Rank + " " + players[1].ScoreHand[j].Suit);
            //}
            Console.WriteLine("Done!");
            Console.ReadKey();
        }