示例#1
0
    public bool ValidateMove(Move moveSent)
    {
        bool valid = false;
        Move move;

        /***************checks to make sure invalid moves don't cause out of bounds errors********************/
        if (moveSent.Row < 1 || moveSent.Column < 1 || moveSent.Row > 9 || moveSent.Column > 9)
        {
            return(false);
        }

        foreach (Move m in PlayerPositions)
        {
            if (m.Row > 9 || m.Row < 1 || m.Column > 9 || m.Row < 1)
            {
                return(false);
            }
        }
        /*****************************************************************************************************/

        //if wall
        if (moveSent.Value != 0)
        {
            if (Walls[Current] == 0)
            {
                valid = false;
            }
            else
            {
                valid = Validator.Validate(this, moveSent);
            }
        }
        //if movement
        else
        {
            //reference as if moving from smaller point to larger point
            if (moveSent < PlayerPositions[Current])
            {
                move = new Move(moveSent);
            }
            else
            {
                move = new Move(PlayerPositions[Current]);
            }

            if (MoveIsJump(moveSent))
            {
                valid = true;
            }
            else if (moveSent != PlayerPositions[NotCurrent])
            {
                if (Adjacent(moveSent, PlayerPositions[Current]))
                {
                    //if moving up or down
                    if (moveSent.Row != PlayerPositions[Current].Row)
                    {
                        if (GameBoard[move.Row, move.Column - 1] <= 0 &&
                            GameBoard[move.Row, move.Column] <= 0)
                        {
                            valid = true;
                        }
                    }
                    //if moving left or right
                    else
                    {
                        if (GameBoard[move.Row - 1, move.Column] >= 0 &&
                            GameBoard[move.Row, move.Column] >= 0)
                        {
                            valid = true;
                        }
                    }
                }
            }
        }

        return(valid);
    }