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