<pre name="code" class="java">package carddemo;
class Card {
private Cardtype cardtype;
private Rank rank;
private Color color;
private boolean isJoker;
public Card(Cardtype type, Rank rank) {
this.rank = rank;
this.cardtype = type;
this.isJoker=false;
}
public Card(Cardtype cardtype,Color color) {
this.cardtype=cardtype;
this.color=color;
this.isJoker=true;
}
public void setColor(Color color) {
this.color = color;
}
public Color getColor() {
return color;
}
public Cardtype getCardtype() {
return cardtype;
}
public void setCardtype(Cardtype cardtype) {
this.cardtype = cardtype;
}
public Rank getRank() {
return rank;
}
public void setRank(Rank rank) {
this.rank = rank;
}
public enum Cardtype {
HERTS("红桃"), SPADE("黑桃"), DIAMOND("方块"), CLUB("梅花"),JOKER("鬼");
private String string;
private Cardtype(String string) {
this.string = string;
}
@Override
public String toString() {
return this.string;
}
}
public enum Rank {
TWO("2"),
THREE("3"), FOUR("4"), FIVE("5"), SIX("6"), SEVEN("7"), EIGHT("8"), NINE(
"9"), TEN("10"), JACK("J"), QUEEN("Q"), KING("K"), ACE("A");
private String string;
private Rank(String string) {
this.string = string;
}
@Override
public String toString() {
return this.string;
}
}
public enum Color{
RED("大"),
BLACK("小");
String string;
private Color(String string) {
this.string=string;
}
@Override
public String toString() {
return this.string;
}
}
@Override
public String toString() {/*如果不添加这个方法,直接输出的card为地址;添加这个方法后得到的值,不管是不是toSring(),得到的都会是字符串*/
if(isJoker){
return color.toString()+cardtype.toString();
}else{
return cardtype.toString()+rank.toString();}
}
}
玩家类
<pre name="code" class="java">package carddemo;
import java.util.ArrayList;
import java.util.List;
public class Player {
private String name;
private int index;
private List<Card> cards=new ArrayList<Card>();
public Player(int index,String name) {
this.name=name;
this.index=index;
}
public void setName(String name) {
this.name = name;
}
public void setIndex(int index) {
this.index = index;
}
public String getName() {
return name;
}
public int getIndex() {
return index;
}
public void add(Card card){
cards.add(card);
}
public List<Card> getCards() {
return cards;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "第"+index+"玩家"+name+"得到的牌是"+cards;
}
}
主程序
package carddemo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import carddemo.Card.Cardtype;
import carddemo.Card.Color;
import carddemo.Card.Rank;
public class CardDemo {
/**
* @author wanghuayan
*
*/
public static void main(String[] args) {
java.util.List<Card> cards=new ArrayList<Card>();
/*使用枚举的个数逐个添加纸牌*/
for (Rank rank:Rank.values()) {
cards.add(new Card(Cardtype.HERTS, rank));
cards.add(new Card(Cardtype.SPADE, rank));
cards.add(new Card(Cardtype.DIAMOND, rank));
cards.add(new Card(Cardtype.CLUB, rank));
}
cards.add(new Card(Cardtype.JOKER, Color.BLACK));
cards.add(new Card(Cardtype.JOKER, Color.RED));
System.out.println(cards.get(0));
Collections.shuffle(cards);/*洗牌*/
System.out.println(cards.size());
java.util.List<Player> players=new ArrayList<Player>();
players.add(new Player(1, "我"));
players.add(new Player(2, "妈妈"));
players.add(new Player(3, "弟弟"));
Iterator<Card> iterator=cards.iterator();
int i=0;
while (iterator.hasNext()) {
Card card = (Card) iterator.next();
players.get(i++%3).add(card);
iterator.remove();
if(cards.size()==3){
break;
}
}
System.out.println(players.get(0).toString());
System.out.println(players.get(1).toString());
System.out.println(players.get(2).toString());
System.out.println(cards);
}
}