示例#1
0
        public GameResult SetBoardValue(string gameId, BoardMove move)
        {
            GameInstance instance = GetGame(gameId);

            if (instance != null)
            {
                if (instance.Config.InitBoard[move.Row, move.Column] == 0)
                {
                    bool isValueValid = true;
                    // maybe check for the correct value
                    if (instance.Config.EnableAssistMode)
                    {
                        List <int> possibleValues = GetPossibleValuesForRowCol(instance.Status.CurrentBoard.Board, move.Row, move.Column);
                        isValueValid = possibleValues.Contains(move.Value);
                    }
                    if (isValueValid)
                    {
                        instance.Status.CurrentBoard.Board[move.Row, move.Column] = move.Value;
                        instance.Status.LastMove = move;
                        //check if board is finished
                        if (instance.Status.CurrentBoard.Board == ShowFinishedBoard(gameId).Board)
                        {
                            instance.Status.GameCompleted = BoardsAreEqual(instance.Status.CurrentBoard.Board, instance.Config.CompletedBoard);
                        }
                        //UpdateCloudGameStatus(instance.Status, gameId).Wait();
                        return(new GameResult
                        {
                            Result = true,
                            Error = SudokuErrorEnum.OK
                        });
                    }
                    else
                    {
                        return(new GameResult
                        {
                            Result = false,
                            Error = SudokuErrorEnum.InvalidMove,
                            ErrorDescription = "Value is not a valid value"
                        });
                    }
                }
                else
                {
                    return(new GameResult
                    {
                        Result = false,
                        Error = SudokuErrorEnum.InitialBoardValueCannotChange
                    });
                }
            }
            else
            {
                //make sure a copy of the board is filled, not actual board
                return(new GameResult
                {
                    Error = SudokuErrorEnum.InvalidGameID,
                    ErrorDescription = string.Format("No game found with gameID {0}", gameId)
                });
            }
        }
示例#2
0
        public PossibleBoardValues GetPossibleBoardValues(string gameId, BoardMove pos)
        {
            GameInstance instance = GetGame(gameId);

            if (instance != null)
            {
                return(new PossibleBoardValues
                {
                    Error = SudokuErrorEnum.OK,
                    PossibleValues = GetPossibleValuesForRowCol(instance.Status.CurrentBoard.Board, pos.Row, pos.Column)
                });
            }
            else
            {
                //make sure a copy of the board is filled, not actual board
                return(new PossibleBoardValues
                {
                    Error = SudokuErrorEnum.InvalidGameID,
                    ErrorDescription = string.Format("No game found with gameID {0}", gameId)
                });
            }
        }