public Round PlayRound(GamerInfo gamer1, GameActions action1, GamerInfo gamer2, GameActions action2) { if (gamer1 == null) { throw new ArgumentNullException(nameof(gamer1)); } if (gamer2 == null) { throw new ArgumentNullException(nameof(gamer2)); } if (action1 == GameActions.None || action2 == GameActions.None) { throw new ArgumentException("Invalid action!"); } var result1 = _rspService.GetWinner(action1, action2); var result2 = _rspService.GetWinner(action2, action1); return(new Round { Gamer1 = gamer1, Gamer2 = gamer2, RoundResultForGamer1 = result1, RoundResultForGamer2 = result2, UserAction1 = action1, UserAction2 = action2 }); }
public IActionResult GetRound([FromRoute] string userName, [FromRoute] int roomId) { if (roomId < 0) { return(BadRequest(roomId)); } if (!_roundStorage.ContainRoom(roomId)) { return(NotFound(roomId)); } var gamers = _roundStorage.PeekGamers(roomId).ToArray(); if (gamers.Length != 2) { return(Conflict()); } var gamer1 = gamers.First(); var gamer2 = gamers.Last(); var result = _rspService.GetWinner(gamer1.UserAction, gamer2.UserAction); if (gamer1.UserName == userName) { return(Ok(result)); } return(Ok(_rspService.InverseResult(result))); }
public RoundResult PlayWithBot(GameActions action) { var botAction = BotDecision(); return(_service.GetWinner(action, botAction)); }
public void GetWinner_MustReturnWin_IfFirstAction_Win_SecondAction(GameActions gamer1, GameActions gamer2) { Assert.Equal(RoundResult.Win, _service.GetWinner(gamer1, gamer2)); }