Exemple #1
0
        protected override async Task <InnerMoveResult> HandleAsync(Connect4MoveData moveData, int playerId)
        {
            var serializedBoard = await boardLoader.LoadByMatchIdAsync(moveData.MatchId);

            var board = new Connect4Board();

            board.DeserializeContent(serializedBoard);

            var item = playerId == 0 ? Item.Red : Item.Yellow;

            board.PlaceItem(item, moveData.Column);
            serializedBoard.BoardData = board.SerializeContent().BoardData;
            var result = new InnerMoveResult
            {
                MoveResult = new Connect4MoveResult
                {
                    Board = board.Board
                }
            };

            if (board.CheckWinner() == item)
            {
                result.Status = Status.Win;
                return(result);
            }

            if (board.Full)
            {
                result.Status = Status.Draw;
                return(result);
            }

            result.Status = Status.Success;
            return(result);
        }
Exemple #2
0
        public override Connect4MoveResult Convert(SerializedConnect4Board serializedBoard)
        {
            var board = new Connect4Board();

            board.DeserializeContent(serializedBoard);

            return(new Connect4MoveResult
            {
                Board = board.Board
            });
        }