void validateNoInterveningTiles(
    int fromX, int fromY, int toX, int toY) throws IllegalMoveException
  {
    if (fromX == toX) {
      // Check Y-axis
      for (int y = Math.min(fromY, toY) + 1; y < Math.max(fromY, toY); y++) {
        Tile interveningTile = getTile(fromX, y); 
        if (interveningTile != null) {
          // Generate an error message
          StringBuffer errorMessage = new StringBuffer("There is ");
          if (interveningTile.isFaceUp()) {
            errorMessage.append("a ");
            errorMessage.append(interveningTile.getName());
          }
          else {
            errorMessage.append("something");
          }
          errorMessage.append(" in the way.");
          throw new IllegalMoveException(errorMessage.toString());
        }
      }
    }
    else if (fromY == toY) {
      // Check X-axis
      for (int x = Math.min(fromX, toX) + 1; x < Math.max(fromX, toX); x++) {
        Tile interveningTile = getTile(x, fromY); 
        if (interveningTile != null) {
          throw new IllegalMoveException(
            "There is a " + interveningTile.getName() + " in the way.");
        }
      }
    }
    else {
      throw new IllegalArgumentException("Move isn't straight.");
    }
  }