|
// ----------------------------------------------------------- class Card implements BelotConstants { // ------------------------------- // Constructor // ------------------------------- Card (int s, int r, int v, int sc) { suit = s; rank = r; value = v; sortCode = sc; } // ------------------------------- // comesAfter // ------------------------------- // otherCard: the other card being compared against // trump: the trump suit // ------------------------------- // Returns true if the first card should // appear in the sorted hand after "otherCard" // ------------------------------- public boolean comesAfter (Card otherCard, int trump) { if ( (suit == trump) && (otherCard.suit != trump)) return false; else if ( (suit != trump) && (otherCard.suit == trump)) return true; else if ((suit != otherCard.suit) && (suit > otherCard.suit)) return true; else if (suit != otherCard.suit) return false; else if (otherCard.rank == EIGHT) return false; else if (rank == EIGHT) return true; else if ( value < otherCard.value ) return true; else return false; } // ------------------------------- // isHigher // ------------------------------- // otherCard: the other card being compared against // trump: the trump suit // ------------------------------- // Returns true if the first card played // beats the "otherCard" played. // ------------------------------- public boolean isHigher (Card otherCard, int trump) { if ((suit == trump) && (otherCard.suit != trump)) return true; else if ((suit != trump) && (otherCard.suit == trump)) return false; else if (suit != otherCard.suit) return true; else if ( value > otherCard.value ) return true; else if (otherCard.rank == EIGHT) return true; else return false; } // ------------------------------- // print // ------------------------------- // Prints the rand and suit of the card // ------------------------------- public void print () { System.out.println(RANK_NAMES[rank] + " " + TRUMP_NAMES[suit] + " " + value); } // ------------------------------- // updateValue // ------------------------------- // trump: the trump suit // ------------------------------- // The 9s and Js change values, // depending on whether they are in // trump or not. // ------------------------------- public void updateValue (int trump) { if (rank == NINE) { if ((suit == trump) || (trump == EVERYTHING)) value = NINE_OF_TRUMP_VALUE; else value = NINE_OF_NONTRUMP_VALUE; } else if (rank == JACK) { if ((suit == trump) || (trump == EVERYTHING)) value = JACK_OF_TRUMP_VALUE; else value = JACK_OF_NONTRUMP_VALUE; } } // ------------------------------- // Reader Methods // ------------------------------- public int getValue() { return value; } public int getSuit () { return suit; } public int getRank () { return rank; } public int getSortCode () { return sortCode; } private int suit; // denotes suit of the card private int rank; // denotes rank of the card private int value; // denotes value of card private int sortCode; // used to sort card in hand } |