private async Task Load() { StatusList = Enum.GetValues(typeof(WinnerStatus)).Cast <WinnerStatus>() .Select(s => new SelectListItem { Text = s.ToString(), Value = s.ToString() }).ToList(); Winner = await _winnerService.GetWinner(Id); }
public IActionResult Post(ApiGameMoveModel apiGameMoveModel) { var apiGameMoveResponseModel = new ApiGameMoveResponseModel(); if (_game.GameOver) { apiGameMoveResponseModel.Status = GameStatus .GameOver .ToString() .ToUpper(); return(new JsonResult(apiGameMoveResponseModel)); } try { Enum.TryParse(_game.GetCurrentPlayer(), out Player player); _game.SetPosition(player, int.Parse(apiGameMoveModel.SquareNumber)); apiGameMoveResponseModel.CurrentGameLog = _gameLogService.Append($"Player {_game.GetCurrentPlayer()} chose square number {apiGameMoveModel.SquareNumber}"); var winnerModel = _winnerService.GetWinner(_game.GetCurrentBoard()); if (winnerModel.HasWon) { _game.GameOver = true; apiGameMoveResponseModel.CurrentGameLog = _gameLogService.Append($"Winner! Player {winnerModel.Player} wins!"); } else { _game.SwapCurrentPlayer(); Enum.TryParse(_game.GetCurrentPlayer(), out Player playerComputer); // AI level var positionComputer = _computerMoves .First(rule => rule .IsMatch(_game.ComputerLevel)) .SetPosition(playerComputer, _game.GetCurrentBoard(), _computerMoves); if (positionComputer > 0) { apiGameMoveResponseModel.CurrentGameLog = _gameLogService.Append($"Computer {_game.GetCurrentPlayer()} chose square number {positionComputer}"); } apiGameMoveResponseModel.Computer.Player = _game.GetCurrentPlayer(); apiGameMoveResponseModel.Computer.Square = positionComputer; if (positionComputer.Equals((int)GameStatus.GameDraw)) { apiGameMoveResponseModel.CurrentPlayer = GameStatus.GameDraw.ToString(); apiGameMoveResponseModel.CurrentGameLog = _gameLogService.Append(GameStatus.GameDraw.ToString()); apiGameMoveResponseModel.Status = GameStatus .GameDraw .ToString() .ToUpper(); return(new JsonResult(apiGameMoveResponseModel)); } var computerHasWon = _winnerService.GetWinner(_game.GetCurrentBoard()); if (computerHasWon.HasWon) { _game.GameOver = true; apiGameMoveResponseModel.CurrentGameLog = _gameLogService.Append($"Winner! Computer {computerHasWon.Player} wins!"); } else { _game.SwapCurrentPlayer(); } } apiGameMoveResponseModel.Status = HttpStatusCode.OK.ToString(); apiGameMoveResponseModel.CurrentPlayer = _game.GetCurrentPlayer(); } catch (PositionException exp) { var message = exp.Message; } catch (Exception ex) { throw ex; } return(new JsonResult(apiGameMoveResponseModel)); }