Example #1
0
 public static GameResult Tie(BotPlayer player1, BotPlayer player2, string log)
 {
     return new GameResult
       {
     Players = new[] {player1, player2},
     IsTie = true,
     Log = log
       };
 }
Example #2
0
 public static GameResult WinnerAndLoser(BotPlayer winner, BotPlayer loser, string log)
 {
     return new GameResult
       {
     Winner = winner,
     Loser = loser,
     Players = new[] {winner, loser},
     Log = log
       };
 }
    public GameResult Play(BotPlayer player1, BotPlayer player2)
    {
      var wrappedPlayer1 = player1.Bot as IRockPaperScissorsBot;
      var wrappedPlayer2 = player2.Bot as IRockPaperScissorsBot;
      if (wrappedPlayer1 == null && wrappedPlayer2 == null) return GameResult.Tie(player1, player2, "Neither player is an IRockPaperScissorsBot");
      if (wrappedPlayer1 == null) return GameResult.WinnerAndLoser(player2, player1, player1.TeamName + " is not an IRockPaperScissorsBot");
      if (wrappedPlayer2 == null) return GameResult.WinnerAndLoser(player1, player2, player1.TeamName + " is not an IRockPaperScissorsBot");

      var rpsPlayer1 = new Player(player1.TeamName, wrappedPlayer1);
      var rpsPlayer2 = new Player(player2.TeamName, wrappedPlayer2);

      var game = new Game(GameRules.Default);
      var gameResults = game.Play(rpsPlayer1, rpsPlayer2);
      return gameResults.ToGameResult((x) => {
        if (x == rpsPlayer1) return player1;
        if (x == rpsPlayer2) return player2;
        throw new InvalidOperationException("You've discovered a bug, you get 50 points.");
      });
    }
Example #4
0
 public void AddPlayer(BotPlayer player)
 {
     _players.Add(player);
 }