继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

学的不好但是可以参考参考......................

慕粉18229804728
关注TA
已关注
手记 3
粉丝 0
获赞 4

//玩家类
public class Wan {

String name ;
Kapai kap;
Wan(String name,Kapai kap){
    this.name=name;
    this.kap= kap;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public Kapai getKap() {
    return kap;
}
public void setKap(Kapai kap) {
    this.kap = kap;
}
public String toString() {

    return "["+this.kap.getPai()+" "+this.kap.getShu()+"]";
}

//卡牌类
public class Kapai {

private String pai;//卡牌名字
private String shu;//卡牌数字

public Kapai(String pai,String shu){
    this.pai=pai;
    this.shu=shu;
}

//重新  equals 和hashCode方法  用于判别不同的手牌
@Override

public String toString() {

    return "["+this.getPai()+" "+this.getShu()+"]";
}

@Override
public boolean equals(Object obj) {
    if(this==obj){
        return true;
    }
    if(obj instanceof Kapai){
        Kapai k = (Kapai)obj;
        if(k.pai.equals(this.pai) && k.shu.equals(this.shu)){
            return true;
        }else{
            return false;
        }
    }else{
        return false;
    }

}

@Override
public int hashCode() {
    return this.shu.hashCode()+this.pai.hashCode();
}

public String getPai() {
    return pai;
}

public void setPai(String pai) {
    this.pai = pai;
}

public String getShu() {
    return shu;
}

public void setShu(String shu) {
    this.shu = shu;
}

}
//比较器
import java.util.Comparator;

public class Compara01 implements Comparator{

@Override
public int compare(Object arg0, Object arg1) {
    Wan p1 = (Wan)(arg0);
    Wan p2 = (Wan)(arg1);

    int s = p2.getKap().getShu().compareTo(p1.getKap().getShu());
    return s==0?p2.getKap().getPai().compareTo(p1.getKap().getPai()):s;
}

}
//玩家最大手牌类
public class max {
Wan wan;
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.Random;
import java.util.Scanner;
public class Dome {
public static void main(String[] args) {
ArrayList<Kapai> list = new ArrayList<Kapai>();//创建一个卡牌集合 用来存储卡牌对象
ArrayList<Wan> wan1 = new ArrayList<Wan>();//创建玩家一
ArrayList<Wan> wan2 = new ArrayList<Wan>();//创建玩家二
ArrayList<Wan> max = new ArrayList<Wan>();//创建玩家1和玩家2手中最大的手牌集合
Dome d= new Dome();//创建本类对象
System.out.println("----------创建扑克牌--------------");
System.out.println("----------扑克牌创建成功-------------");
d.pu(list);//传入卡牌集合 对卡牌进行初始化
System.out.println("----------开始洗牌------------");
Collections.shuffle(list);//对卡牌集合进行打乱顺序
System.out.println("----------洗牌结束-------------");
System.out.println("-----------创建玩家--------------");
Scanner sa = new Scanner(System.in);
Random ra = new Random();//定义随机数对象
String[] str = new String[2];//定义一个数组 用户接受用户所属于的玩家名字
for(int x=0; x<2; x++){
System.out.println("请输入第"+(x+1)+"位玩家的id和名字");
System.out.println("输入ID:");
int id = sa.nextInt();
System.out.println("输入名字:");
String name = sa.next();
str[x] = name;//接受名字
}
for(int x= 0;x<2;x++){//遍历玩家名字数组
System.out.println("-----欢迎玩家"+str[x]);
}
System.out.println("---------开始发牌--------");
for(int x= 0;x<2;x++){
for(int y=0;y<2;y++){
System.out.println("------玩家:"+str[y]+"拿牌");
int i = ra.nextInt(list.size());//产生一个长度为卡牌集合长度的一个随机数
Kapai pp = list.get(i);//用随机数得到一个随机的卡牌对象 这里会产出一个相同的随机数 懒得想了。。。。。
if(y==0){
wan1.add(new Wan(str[y],pp));//玩家1开始存储手牌
}else{
wan2.add(new Wan(str[y],pp));//玩家2开始存储手牌
}
}

}   
    //对玩家1和玩家2的手牌进行排序  会得到角标为0的数是最大的手牌
    Collections.sort(wan1, new Compara01());//自己定义比较器
    Collections.sort(wan2, new Compara01());//自己定义比较器       
    System.out.println("-------发牌结束开始游戏-----------");
    for(int x=0;x<2;x++){
        if(x==0){//得到玩家1角标为0的数是最大的手牌
        System.out.println(str[x]+"最大的手牌是"+wan1.get(0).getKap());
        }else{//得到玩家2角标为0的数是最大的手牌
            System.out.println(str[x]+"最大的手牌是"+wan2.get(0).getKap());
        }
    }
    //再把玩家1和玩家2手中最大的牌  传入之前定义的最大手牌集合中
    max.add(wan1.get(0));
    max.add(wan2.get(0));
    //通过自己定义的比较得到最大的牌角标为0
    Collections.sort(max,new Compara01());
    //定义一个可接受字符串名字的对象  不然会生成哈希吗值
    StringBuilder sb = new StringBuilder();
    //接受角标为0的  最大手牌集合中的玩家名字
    sb.append(max.get(0).getName());
    //输出名字
    System.out.println("----------"+sb.toString()+" 玩家获胜");
    System.out.println("玩家各自的手牌是--------");
    //自己定义一个函数  把玩家1和玩家2的集合进行遍历
    d.maxx(wan1);
    d.maxx(wan2);       
}

public void pu(ArrayList<Kapai> list){
    //定义会出现的卡牌颜色跟数字
    String[] s = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
    String[] p = {"方片","梅花","红桃","黑桃"};
    //循环添加进卡牌对象集合
    for(int y = 0; y<4;y++){
    for(int x =0;x<s.length;x++){
        Kapai k= new Kapai(p[y],s[x]);
        list.add(k);
        }
    }
    //进行遍历卡牌集合
    Iterator<Kapai> it = list.iterator();
    while(it.hasNext()){
        Kapai kk =(Kapai)it.next();
        System.out.print(kk+" ");
    }
}
//遍历玩家集合
public void maxx(ArrayList<Wan> wan){
    Iterator<Wan>it1 = wan.iterator();
    while(it1.hasNext()){
        Wan wa = it1.next();
        Kapai kp = wa.getKap();
        String n = wa.getName();
        System.out.println(n+":"+kp);
    }
}

}

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP