コード例 #1
0
        public void PlayRound(IPlayer normalPlayer, IComputerPlayer computerPlayer)
        {
            GameMoveViewModel chosenMove = null;

            while (chosenMove == null)
            {
                _inputOutputWrapper.WriteLine("Please enter your choice:");
                var choice = _inputOutputWrapper.ReadLine();
                chosenMove = _gameMoveViewModelHelper.GameMoveViewModels.FirstOrDefault(x => x.InputValue == choice);
                if (chosenMove == null)
                {
                    _inputOutputWrapper.WriteLine("That was an invalid choice, please try again");
                }
            }

            var computerGameMove          = computerPlayer.GetComputerMove();
            var computerGameMoveViewModel = _gameMoveViewModelHelper.GameMoveViewModels.FirstOrDefault(x => x.GameMove == computerGameMove);

            if (computerGameMoveViewModel == null)
            {
                throw new ApplicationException("Error Generating computer choice");
            }

            var result = _roundCalculator.CalculateRoundResult(chosenMove.GameMove, computerGameMove);

            _inputOutputWrapper.WriteLine($"Computer chose: {computerGameMoveViewModel.FriendlyName}");

            string resultString = null;

            switch (result)
            {
            case Result.Draw:
                resultString = "Draw!";
                break;

            case Result.Player1Wins:
                resultString = "You win!";
                IncrementWins(normalPlayer);
                break;

            case Result.Player2Wins:
                resultString = "Computer wins!";
                IncrementWins(computerPlayer);
                break;
            }

            _inputOutputWrapper.WriteLine(resultString);
        }
コード例 #2
0
        public async Task <ActionResult <GameMoveViewModel> > MoveAsync(int id, [FromBody] GameMoveViewModel model, CancellationToken cancellationToken)
        {
            var user = await GetUserAsync(cancellationToken : cancellationToken);

            var move = new MoveModel
            {
                GameDeckCardCollectionId = model.GameDeckCardCollectionId,
                Column = model.Column,
                GameId = id,
                Row    = model.Row,
                UserId = user.Id,
            };
            await _gamePlayService.MakeMoveAsync(move, cancellationToken : cancellationToken);

            return(model);
        }