/**
   * Verifies that three given Cards constitute a set
   *
   * @param card1 first Card
   * @param card2 second Card
   * @param card3 third Card
   * @return true if the three Cards constitute a set false if the three Cards do not constitute a
   *     set
   */
  public boolean checkForSet(Card card1, Card card2, Card card3) {
    // SET isSet to true
    boolean isSet = true;

    // IF card1 and card2 and card3 are null
    if (card1 == null || card2 == null || card3 == null) {
      // SET isSet to false
      isSet = false;
    }
    // ELSE IF card1 == card2 and card2 == card3 and card1 == card3
    else if (card1.equals(card2) && card2.equals(card3) && card1.equals(card3)) {
      // SET isSet to false
      isSet = false;
    }
    // ELSE
    else {
      // SET isSet to the AND of the return value of isFeatureSet with
      // each cards color
      isSet &= isFeatureSet(card1.getColor(), card2.getColor(), card3.getColor());
      // SET isSet to the AND of the return value of isFeatureSet with
      // each cards shape
      isSet &= isFeatureSet(card1.getShape(), card2.getShape(), card3.getShape());
      // SET isSet to the AND of the return value of isFeatureSet with
      // each cards fill
      isSet &= isFeatureSet(card1.getFill(), card2.getFill(), card3.getFill());
      // SET isSet to the AND of the return value of isFeatureSet with
      // each cards number
      isSet &= isFeatureSet(card1.getNumber(), card2.getNumber(), card3.getNumber());
    }
    // END IF

    // RETURN isSet
    return isSet;
  }
  private String getReasons(boolean set) {
    String retString = "";

    Card c1 = getInlayCard(new Natural(0));
    Card c2 = getInlayCard(new Natural(1));
    Card c3 = getInlayCard(new Natural(2));

    if (set) {
      if (c1.getColor() == c2.getColor() && c1.getColor() == c3.getColor()) {
        retString = retString + "-All cards are " + c1.getColor() + "\n";
      } else {
        retString = retString + "-All cards have different colors\n";
      }

      if (c1.getFill() == c2.getFill() && c1.getFill() == c3.getFill()) {
        retString = retString + "-All cards have a " + c1.getFill() + " fill\n";
      } else {
        retString = retString + "-All cards have a different fill\n";
      }

      if (c1.getNumber() == c2.getNumber() && c1.getNumber() == c3.getNumber()) {
        retString = retString + "-All cards are of number " + c1.getNumber() + "\n";
      } else {
        retString = retString + "-All cards have different number\n";
      }

      if (c1.getShape() == c2.getShape() && c1.getShape() == c3.getShape()) {
        retString = retString + "-All cards are " + c1.getShape() + " shapes\n";
      } else {
        retString = retString + "-All cards are have different shapes\n";
      }
    } else {
      if (!isFeatureSet(c1.getColor(), c2.getColor(), c3.getColor())) {
        if (c1.getColor() == c2.getColor()) {
          retString =
              retString + "-Card1 and Card2 have same color but Card3 has a different color\n";
        } else if (c1.getColor() == c3.getColor()) {
          retString =
              retString + "-Card1 and Card 3 have same color but Card2 has a different color\n";
        } else if (c2.getColor() == c3.getColor()) {
          retString =
              retString + "-Card2 and Card3 have same color but Card1 has a different color\n";
        }
      }
      if (!isFeatureSet(c1.getFill(), c2.getFill(), c3.getFill())) {
        if (c1.getFill() == c2.getFill()) {
          retString =
              retString + "-Card1 and Card2 have same fill but Card3 has a different fill\n";
        } else if (c1.getFill() == c3.getFill()) {
          retString =
              retString + "-Card1 and Card 3 have same fill but Card2 has a different fill\n";
        } else if (c2.getFill() == c3.getFill()) {
          retString =
              retString + "-Card2 and Card3 have same fill but Card1 has a different fill\n";
        }
      }
      if (!isFeatureSet(c1.getNumber(), c2.getNumber(), c3.getNumber())) {
        if (c1.getNumber() == c2.getNumber()) {
          retString =
              retString + "-Card1 and Card2 have same number but Card3 has a different number\n";
        } else if (c1.getNumber() == c3.getNumber()) {
          retString =
              retString + "-Card1 and Card 3 have same number but Card2 has a different number\n";
        } else if (c2.getNumber() == c3.getNumber()) {
          retString =
              retString + "-Card2 and Card3 have same number but Card1 has a different number\n";
        }
      }
      if (!isFeatureSet(c1.getShape(), c2.getShape(), c3.getShape())) {
        if (c1.getShape() == c2.getShape()) {
          retString =
              retString + "-Card1 and Card2 have same shape but Card3 has a different shape\n";
        } else if (c1.getShape() == c3.getShape()) {
          retString =
              retString + "-Card1 and Card 3 have same shape but Card2 has a different shape\n";
        } else if (c2.getShape() == c3.getShape()) {
          retString =
              retString + "-Card2 and Card3 have same shape but Card1 has a different shape\n";
        }
      }
    }

    return retString;
  }