public GameAction Action(GameState state) { switch (Rnd.Next(0, 16)) { case 0: return GameAction.Fold; case 1: case 2: case 3: var raise = Math.Max(state.Own.Stack, state.MaxWinPot); if (raise > 0) { return GameAction.Raise(raise); } else { return GameAction.Check; } default: if (state.AmountToCall > 0) { return GameAction.Call; } else { return GameAction.Check; } } }
/// <summary>Runs it all.</summary> public void DoRun(IBot bot) { if (bot == null) { throw new ArgumentNullException("bot"); } var settings = new Settings(); var match = new GameState(settings); string line; while ((line = this.Reader.ReadLine()) != null) { #if !DEBUG try { #endif var instruction = Instruction.Parse(line); switch (instruction.InstructionType) { case InstructionType.Player: match.UpdatePlayer(instruction); HandleOpponentReaction(bot, match, instruction); if (match.Result != RoundResult.NoResult) { bot.Result(match); } break; case InstructionType.Match: match.UpdateMatch(instruction); break; case InstructionType.Settings: settings.Update(instruction); match.Update(settings); break; case InstructionType.Action: match.UpdateAction(instruction); var action = bot.Action(match); Writer.WriteLine(action); break; case InstructionType.None: case InstructionType.Output: default: break; } #if !DEBUG } catch (Exception x) { Console.Error.WriteLine(line); Console.Error.WriteLine(x); } #endif } }
public GameAction Action(GameState state) { if (state.AmountToCall > 0) { return GameAction.Call; } else { return GameAction.Check; } }
public GameAction Action(GameState state) { var raise = Math.Max(state.Own.Stack, state.MaxWinPot); if (raise > 0) { return GameAction.Raise(raise); } else { return GameAction.Check; } }
public GameAction Action(GameState state) { var pairs = CardPairs.Create(state.Own.Hand); // We have to (Small Blind), and a creapy hand. if (state.AmountToCall != 0 && state.Table.Count == 0) { if (pairs.Max < 2 && state.Own.Hand.Best.Height < 11) { return GameAction.Fold; } return GameAction.Call; } // If we need to call, we call. if (state.AmountToCall != 0) { return GameAction.Call; } // we check. return GameAction.Check; }
private static void HandleOpponentReaction(IBot bot, GameState state, Instruction instruction) { if (instruction.Player != state.YourBot) { GameActionType tp; if (Enum.TryParse<GameActionType>(instruction.Action, out tp)) { GameAction action; switch (tp) { case GameActionType.raise: action = GameAction.Raise(instruction.Int32Value); break; case GameActionType.check: action = GameAction.Check; break; case GameActionType.call: action = GameAction.Call; break; case GameActionType.fold: default: action = GameAction.Fold; break; } bot.Reaction(state, action); } } }
public void Result(GameState state) { }
public void Reaction(GameState state, GameAction reaction) { }
public GameAction Action(GameState state) { return GameAction.Fold; }
/// <summary>Copies the game state.</summary> public GameState Copy() { var copy = new GameState() { Round = this.Round, Table = Table.Copy(), Player1 = this.Player1.Copy(), Player2 = this.Player2.Copy(), }; return copy; }