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); }
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); }