跪求优化,运行结果没完全按照老师,但基本要求遵守了规则
//卡牌类
package packagepuke;
public class card implements Comparable<card>{
private int num;
private int color;
public card(int num,int color) {
this.num=num;
this.color=color;
}
@Override
public int compareTo(card o) {
// TODO Auto-generated method stub
//首先数字比较,不行再花色比较
if(this.num>o.num)return 1;
else if(this.num<o.num)return -1;
else return this.color-o.color;
}
@Override
public String toString() {
//打印卡牌信息
String []card_num= {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
String s=new String();
switch (color) {
case 0:
s="方块";
break;
case 1:
s="梅花";
break;
case 2:
s="红心";
break;
case 3:
s="黑桃";
break;
default:
s="花色错误";
break;
}
return s+card_num[num];
}
}
//玩家类
package packagepuke;
import java.util.*;
public class person {
private String name;
private List<card> mycard;
public person(String name) {
this.name=name;
mycard=new ArrayList<card>();
}
public void getCard(card c) {
//这里可以做一个判断
mycard.add(c);
}
public void reSet() {
if(mycard!=null)
mycard.clear();
}
public card getMax() {
Collections.sort(mycard);//根据卡牌的大小比较,对牌组进行排序
return mycard.get(mycard.size()-1);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//打印玩家信息
@Override
public String toString() {
String str=new String();
for(card c:mycard)
str+=c.toString();
return "玩家 :" + name + "--"+str;
}
}
//测试类
package packagepuke;
import java.util.*;
public class test {
public List<card>cards;
public static void main(String[] args) {
// TODO Auto-generated method stub
test t=new test();
person p=new person("Java");
person pp=new person("Node");
t.createCard();
t.wash();//第一次游戏
t.playGame(p,pp);
t.wash();//第二次游戏
t.playGame(p,pp);
}
//创建扑克牌
public void createCard() {
cards=new ArrayList<card>();
System.out.println("---------创建扑克牌-----------");
for(int i=0;i<13;i++)
for(int j=0;j<4;j++)
cards.add(new card(i,j));
System.out.println("--------遍历打印扑克牌资源----------");
for(card c:cards)
System.out.println(c);
}
//洗牌
public void wash() {
if(cards==null) {
System.out.println("--------没有扑克,游戏结束----------");
return;
}
System.out.println("--------开始洗牌----------");
Collections.shuffle(cards);
System.out.println("--------遍历打印扑克牌资源----------");
for(card c:cards)
System.out.println(c);
}
//开始游戏
public void playGame(person p,person pp) {
p.reSet();//开始前都需要进行清空玩家手牌
pp.reSet();
p.getCard(cards.get(0));//主函数中无法访问非静态成员,选择分离
pp.getCard(cards.get(1));
p.getCard(cards.get(2));
pp.getCard(cards.get(3));
p.getCard(cards.get(4));
pp.getCard(cards.get(5));
System.out.println("--------打印玩家手牌----------");
System.out.println(p);
System.out.println(pp);
System.out.println("--------打印玩家最大手牌----------");
card c=p.getMax();
System.out.println(p.getName()+"最大手牌为"+c);
card cc=pp.getMax();
System.out.println(pp.getName()+"最大手牌为"+cc);
//打印结果
if(c.compareTo(cc)>0)System.out.println("赢家为"+p.getName());
else System.out.println("赢家为"+pp.getName());
}
}