public override int GetDecision(BoardSituation situation, TableInfo info) { if (handId != info.HandId) { handId = info.HandId; street = -1; } int pot = situation.GetPot(); if (street != situation.Street) { p = Hand.WinOdds(hand, situation.Cards, 0UL, info.Players.Count); street = situation.Street; } double win = p * pot; int minBet = situation.MaxBet - situation.GetPlayerCurrentBet(name); int bet_cur = situation.GetPlayerPot(name) + minBet; if (bet_cur + info.SmallBlind > win && win >= bet_cur) { return(minBet); } else if (win >= bet_cur + info.SmallBlind) { return(Convert.ToInt32((win - bet_cur) + minBet)); } return(-1); }
public override int GetDecision(BoardSituation situation, TableInfo info) { Console.WriteLine(name + " your turn, make decision"); var strBet = Console.ReadLine(); return(Convert.ToInt32(strBet)); }
public override int GetDecision(BoardSituation situation, TableInfo info) { if (decisionIndex + 1 > Decisions.Length) { return(-1); } return(Decisions[decisionIndex++]); }
public override int GetDecision(BoardSituation situation, TableInfo info) { int inGamePlayerCount = GetNotFoldedPlayers(situation, info.Players.Keys.ToArray()).Count(); if (info.HandId != handId) { street = -1; dead = hand; handId = info.HandId; opps = new ulong[info.Players.Count]; for (int i = 0; i < opps.Length; i++) { opps[i] = Hand.RandomHand(dead, 2); dead |= opps[i]; } } if (street != situation.Street) { street = situation.Street; oppsP = new double[inGamePlayerCount]; for (int i = 0; i < oppsP.Length; i++) { oppsP[i] = Hand.WinOdds(opps[i], situation.Cards, dead, inGamePlayerCount); } p = Hand.WinOdds(hand, situation.Cards, dead, inGamePlayerCount); } bool call = false, raise = false; for (int i = 0; i < oppsP.Length; i++) { if (oppsP[i] > p) { return(-1); } if (p - oppsP[i] < 0.3) { call = true; } raise = true; } int minBet = situation.MaxBet - situation.GetPlayerCurrentBet(name); int minRaise = Convert.ToInt32((p * situation.GetPot()) + minBet); if (call == true && raise == false) { return(minBet); } else if (call == true && raise == true) { return(minRaise); } else { return(minRaise * 2); } }
protected IEnumerable <string> GetNotFoldedPlayers(BoardSituation situation, string[] players) { for (int i = 0; i < players.Length; i++) { if (!situation.IsPlayerFolded(players[i])) { yield return(players[i]); } } }
public virtual int GetDecision(BoardSituation situation, TableInfo info) { return(-1); }
public override int GetDecision(BoardSituation situation, TableInfo info) { throw new NotImplementedException(); }