Project P7
    Boggle Checker
    
    Overview 
    Imagine you are part of a team developing a computer-based variation
    of
    the board game Boggle.  Boggle is a word game consisting of NxN
    grid of six-sided die where each side of a die has an upper
    case letter
    on it.  By shaking up the grid of die you end of with a random
    NxN
    grid of letters something like this:
    
    X Q A E
    Z O T S
    I N D L
    Y R U E
    
    Next the players write down all of the words they find in the
    grid.  Words can occur forward, backward, up, down, diagonally,
    or
    "snake" through the board. For example, the grid above contains the
    words {IN, TO, RIND, TEA, TEASE} and possibly more. 
    Note that TEASE reuses the letter E - this is allowed.  The
    goal is to find the most words that no other player has found. A
    word
    must have more than one letter.
     
    Your assignment on the team is to develop the word verification
    routine.  When a player guesses word, you have to determine if
    the
    word they guessed actually exists in the board.
    
    Write a boolean function called checkWord that has a single String
    parameter representing the word to look for in the Boggle
    board. 
    You may write private helper methods if you choose.
    
    Problem Requirements
    Write a program to perform word
      verification for a Boggle game. 
    
    You must follow this Java class
      definition:
    
    
    public class BoggleChecker
    {
    
    /** Set the board for this
      checker.
       * @param board a String containing the letters in a 4x4 or
      5x5
      board
       * in row-major order.  
     * @pre board.length() is
      16
      or 25.
       * @pre board contains only upper case letters.
     */
    public void setBoard(String
      board)
    
    /** Determine if the given
      word
      exists in the current Boggle board. 
       * @param word is a player's guess
       * @pre word contains only letters
       * @pre word.length() > 1
       * @pre a board has been set for this checker.
       */
    public boolean
      checkWord(String
      word)
    
    }
    
    Note: Please design your own solution.
    While this algorithm is easy
    to find on the Web or in textbooks, please write your own algorithm
    from
    scratch.  Do not use the internet or other resources for any
    purpose related to games.   
    
    Unit
      Testing
    You must submit
    execution output that demonstrates that your program can produce the
    correct results for example in the overview
      - 
        Write a JUnit test class and
          print
          the test source code and the successful test
runner
            output.  
- 
        Write a driver and a file of test input data.  Print the
          driver source code, the input data file, and the execution
          output.  
Perform any additional tests you want to convince yourself that
      your solution is correct.
    Acceptance Testing
    In addition, your program must pass
      the
      instructor's acceptance test.  Once you are satisfied that
      your
      program is correct and is passing your unit tests, create a new
      time
      log entry.  Enter "Test" for the phase and in the
      comment field enter "Acceptance Testing".  (You may use
      "Accept
      Test" for the phase if you prefer.  Do not count this phase
      as
      development time in your summary).
    
    Submit your source code using the
      Web-CAT grader. On this project the grader will not run your own
      unit tests. Web-CAT will report checkstyle errors in red and they
      WILL count in your total score. Each coding standard violation is
      a defect. The defect type is 10 for code syntax, and 80 for
      Javadoc errors. (Tip: To avoid getting style errors in Web-CAT,
      run the Checkstyle extension in BlueJ before submitting to
      Web-CAT.) 
    
    If Web-CAT reports any errors, tally
      them in a new section of the defect tally without an inject phase,
      with a removal phase of "ACCEPTANCE TEST". Don't add them to
      Injected Phase or total on the Summary form. You are allowed five
      Web-CAT submissions without penalty.  If you take more than
      five submissions, your project earns only half-credit.  
    
    When Web-CAT assigns a 100% score to
      your work, you should finalize your work according to the
      assignment
      directions.