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); }