0x00 简述
使用枚举类型对一副扑克牌(52张牌,不包括大小王)建模:
一副扑克牌有四种花色(Suit):HEART,SPADE,DIAMOND,CLUB;
有十三种等级(Rank):ACE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,JACK,QUEEN,KING;
创建2个枚举类型包含这两类实例。
每张扑克牌(Card)对象都会有这两个属性,创建一个带有这两个枚举类型属性的类Card。
0x01 为每个花色及大小建模
创建一个Poker类,为花色和大小分别创建两个枚举集。
public class Poker {
enum Suit{HEART("♥",1),SPADE("♠",2),DIAMOND("♦",3),CLUB("♣",4);
public String s;
public int i;
Suit(String s,int i) {
this.s=s;
this.i=i;
}
public String getS() {
return s;
}
public int getI() {
return i;
}
}
enum Rank{TWO("2",2),THREE("3",3),FOUR("4",4),FIVE("5",5),SIX("6",6),SEVEN("7",7),EIGHT("8",8),NINE("9",9),TEN("10",10),JACK("J",11),QUEEN("Q",12),KING("K",13),ACE("A",14);
public String r;
public int i;
Rank(String r,int i) {
this.r=r;
this.i=i;
}
public String getR() {
return r;
}
public int getI() {
return i;
}
}
}
这样,我们就有了创建一张牌的接口。
0x02 创建一张单牌
创建一个Card类,用来表明和获取一张牌的花色大小。
public class Card {
public Poker.Rank rank;
public Poker.Suit suit;
public Card(Poker.Suit suit,Poker.Rank rank){
this.rank=rank;
this.suit=suit;
}
public Poker.Rank getRank() {
return rank;
}
public Poker.Suit getSuit() {
return suit;
}
@Override
public String toString() {
return suit.getS()+rank.getR();
}
}
在上述代码中,使用toString()方法即可获得该卡的信息。