Player:玩家类
package com.PraticeDemo;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
/*
* Player玩家类
* 1.getCard(),收牌,或者说qi牌,qi字不会写。。。
* 2.getMaxCard(),获取最大手牌
* 3.printAll(),打印所有手牌
* 4.Clear(),清空手牌
* */
public class Player {
private String ID;
private String name;
private Set<Card> cards;//手牌
public Player(String iD, String name) {
ID = iD;
this.name = name;
cards = new HashSet<Card>();
}
//发牌
public void getCard(Card card){
this.cards.add(card);
}
//获取最大手牌
public Card getMaxCard(){
Iterator<Card> it = cards.iterator();
Card temp = null;
//若手牌集合不为空初始化temp为第一张牌,否则返回null
if(it.hasNext()) temp = it.next();
else return null;
while(it.hasNext()){//获取最大手牌
Card card=it.next();
if(temp.compareTo(card)<0) temp = card;
}
return temp;
}
//打印手牌
public void printAll(){
System.out.println("玩家"+this.getName()+"手牌为:");
for(Card card:cards){
System.out.print(card.getName()+" ");
}
System.out.println();
}
//清空手牌
public void Clear(){
this.cards.clear();
}
public String getID() {
return ID;
}
public String getName() {
return name;
}
public Set<Card> getCards() {
return cards;
}
}
PraticeDemo:主类
package com.PraticeDemo;
import java.util.Scanner;
import java.util.Set;
import java.util.Iterator;
public class PraticeDemo {
public static void main(String[] args) {
Player p1,p2;
Set<Card> cards;
Iterator<Card> it;
CardList list ;//= new CardList();
while(true){
list = new CardList();
//生成扑克牌
list.CreatCards();
//打印扑克
list.printAll();
//洗牌
cards = list.WashCard();
//创建玩家1
String Name;
Scanner sc = new Scanner(System.in);
System.out.println("输入玩家一的姓名:");
Name=sc.next();
p1 = new Player(null, Name);
//创建玩家2
System.out.println("输入玩家二姓名:");
Name = sc.next();
p2 = new Player(null, Name);
//发牌
it = cards.iterator();//使用迭代器获取集合元素
Card card = null;
int i=1,temp=0;//temp初始化为0
do{
card = it.next();
p1.getCard(card);//p1收牌
System.out.println("玩家1 "+p1.getName()+" 收牌:"+card.getName());
card = it.next();
p2.getCard(card);//p2收牌
System.out.println("玩家2 "+p2.getName()+" 收牌:"+card.getName());
i++;
if(i>2)//每人至少两张牌
temp=p1.getMaxCard().compareTo(p2.getMaxCard());
}while(temp==0&&it.hasNext());
//打印玩家最大手牌
System.out.println(p1.getName()+"最大:"+p1.getMaxCard().getName()+" "
+p2.getName()+"最大:"+p2.getMaxCard().getName());
System.out.println("----------temp="+temp);
//判断胜负
if(temp>0)
System.out.println("玩家"+p1.getName()+"胜利!");
else if(temp<0)
System.out.println("玩家"+p2.getName()+"胜利!");
//打印所有手牌
p1.printAll();
p2.printAll();
System.out.println("是否继续?Y/N");
Name=sc.next();
if(Name.equals("Y")){//清空
p1.Clear();
p2.Clear();
cards.clear();
}
else
break;
}
System.out.println("退出!");
}
}