public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", Route = "ChessGame/{board?}/{move?}")] HttpRequest req, string board, string move, ILogger log) { var game = await Task.Run(() => { if (string.IsNullOrEmpty(board)) { return(new ChessGame(_boardEngineProvider, _checkDetectionService, _boardSetup, Colours.White)); } return(ChessGameConvert.Deserialise(board)); }); string moveResult = string.Empty; if (!string.IsNullOrEmpty(move)) { moveResult = game.Move(move); } var items = game.BoardState.GetItems((int)game.CurrentPlayer).ToArray(); return(new JsonResult(new ChessWebApiResult(game, game.CurrentPlayer, moveResult ?? "", items))); }
public ChessWebApiResult GetMovesForPlayer(string board, Colours forPlayer) { var game = ChessGameConvert.Deserialise(board); var items = game.BoardState.GetItems((int)forPlayer); return(new ChessWebApiResult(game, forPlayer, string.Empty, items.ToArray())); }
public ChessWebApiResult GetMoves(string board) { var game = ChessGameConvert.Deserialise(board); var items = game.BoardState.GetItems((int)game.CurrentPlayer); return(new ChessWebApiResult(game, game.CurrentPlayer, string.Empty, items.ToArray())); }
public ChessWebApiResult GetMovesForLocation(string board, string location) { var game = ChessGameConvert.Deserialise(board); var loc = location.ToBoardLocation(); var item = game.BoardState.GetItem(loc); return(new ChessWebApiResult(game, item.Item.Player, string.Empty, item)); }
public ChessWebApiResult PlayMove(string board, string move) { var game = ChessGameConvert.Deserialise(board); var msg = game.Move(move); return(new ChessWebApiResult( game, game.CurrentPlayer, msg, game.BoardState.GetItems((int)game.CurrentPlayer).ToArray() )); }
public Task <ChessWebApiResult> PlayMoveAsync(string board, string move) { return(Task.Run(() => { var game = ChessGameConvert.Deserialise(board); var msg = game.Move(move); var items = game.BoardState.GetItems((int)game.CurrentPlayer).ToArray(); var result = new ChessWebApiResult { Board = ChessGameConvert.Serialise(game), BoardText = new ChessBoardBuilder().FromChessGame(game).ToTextBoard(), AvailableMoves = ToMoveList(game, items), WhoseTurn = game.CurrentPlayer.ToString(), Message = msg }; return result; })); }
public void Should_serialise_and_deserialise_to_68char_format() { var chessGame = ChessFactory.NewChessGame(); var actualNewBoard = ChessGameConvert.Serialise(chessGame); var expectedNewBoard = "rnbqkbnrpppppppp................................PPPPPPPPRNBQKBNR" // The board + "W" // Whose turn + "0000"; // White Queen/King Black Queen/King castle availability Assert.That(actualNewBoard, Is.EqualTo(expectedNewBoard)); var actualGame = ChessGameConvert.Deserialise(actualNewBoard); var actualGameAsString = new ChessBoardBuilder().FromChessGame(actualGame).ToTextBoard(); var expectedGameAsString = new ChessBoardBuilder().FromChessGame(chessGame).ToTextBoard(); Assert.That(actualGameAsString, Is.EqualTo(expectedGameAsString)); Console.WriteLine(actualGameAsString); }