Пример #1
0
        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
            });
        }
Пример #2
0
        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)));
        }
Пример #3
0
        public RoundResult PlayWithBot(GameActions action)
        {
            var botAction = BotDecision();

            return(_service.GetWinner(action, botAction));
        }
Пример #4
0
 public void GetWinner_MustReturnWin_IfFirstAction_Win_SecondAction(GameActions gamer1, GameActions gamer2)
 {
     Assert.Equal(RoundResult.Win, _service.GetWinner(gamer1, gamer2));
 }