📄 card.java
字号:
import java.awt.*;//Represents a standard (one of 52) poker card
//Note that most operations as currently inline to ensure
//the speed is the same as if it were an open abstraction
//牌的花色
class Suit
{
private final String name;
//Ordinal of next suit to be created
private static int nextOrdinal = 0;
//Assign an ordinal to this suit
private final int ordinal = nextOrdinal++;
private Suit(String name)
{
this.name = name;
}
public String toString()
{
return name;
}
public int compareTo(Object o)
{
return ordinal - ((Suit)o).ordinal;
}
static final Suit HEART = new Suit("heart"); //红心
static final Suit DIAMOND = new Suit("diamond");//方片
static final Suit CLUB = new Suit("club"); //草花
static final Suit SPADE = new Suit("spade"); //黑桃
}
class Card
{
Card()
{
suit = Suit.HEART;
value='A';
}
Card(Suit suit, char value)
{
this.suit = suit;
this.value = value;
//assert(IsValid());
}
Card(final Card card)
{
suit = card.suit;
value = card.value;
}
//return the card type 'A' -'K'
char cardType()
{
return value;
}
//set the card type
boolean setType(char newType)
{
value = newType;
return isValid();
}
// return the suit as 'H','D','S','C'
Suit getSuit()
{
return suit;
}
//Set the suit: return true if successful
boolean setSuit(Suit newSuit)
{
suit = newSuit;
return true;
}
final boolean isValid()
{
return isFaceCard() || isValueCard() || isAce();
}
final boolean isFaceCard()
{
return value =='J' || value == 'Q' || value == 'K';
}
final boolean isValueCard()
{
return (value >= '2' && value <='9') || value =='T';
}
final boolean isAce()
{
return value =='A';
}
boolean lessThan(Card rhs)
{
return value < rhs.value;
}
public boolean equals (Object obj)
{
if (obj instanceof Card)
{ Card rhs = (Card)obj; return value == rhs.value && suit == rhs.suit;
}
return false;
}
void assign (final Card rhs)
{
value = rhs.value;
suit = rhs.suit;
}
// return 'H', 'D', 'C', 'S'
char suitAsChar()
{
if(suit==Suit.HEART)
return 'H';
if(suit==Suit.DIAMOND)
return 'D';
if(suit==Suit.SPADE)
return 'S';
if(suit==Suit.CLUB)
return 'C';
//throw "Illegal Card"; //Can't occur
return ' ';
} public String toString() { return cardType() + "" + suitAsChar(); } Image getIcon() { int iconBase=1; switch(suitAsChar()) { case 'C': iconBase =1; break; case 'D': iconBase =14; break; case 'H': iconBase = 27; break; case 'S': iconBase = 40; break; } if (isAce()) iconBase +=0; if(isValueCard() && (value !='T')) iconBase += value-'1'; switch(value) { case 'T': iconBase += 9; break; case 'J': iconBase += 10; break; case 'Q': iconBase += 11; break; case 'K': iconBase += 12; } return Cfg.cardIcons[iconBase]; }
private Suit suit;
private char value;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -