a761485716 2018-01-03 04:11 采纳率: 100%
浏览 1179
已采纳

java斗地主如何实现记录手中相同牌的牌数

public static void main(String[] args) {
String[] pai = new String[] { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K","A", "2" };
String[] hs = new String[] { "♥", "♠", "♦", "♣" };
List a = new ArrayList();
for (int i = 0; i < pai.length; i++) {
a.add( pai[i]);
a.add( pai[i]);
a.add( pai[i]);
a.add( pai[i]);
}
a.add("大王");
a.add("小王");

Collections.shuffle(a);
List<String> j = new ArrayList<String>();
List<String> y = new ArrayList<String>();
List<String> b = new ArrayList<String>();
List<String> d = new ArrayList<String>();
for (int i = 0; i < a.size(); i++) {
    if (i >= a.size() - 3) {
        d.add(a.get(i));
    } else if (i % 3 == 0) {
        j.add(a.get(i));
    } else if (i % 3 == 1) {
        y.add(a.get(i));
    } else if (i % 3 == 2) {
        b.add(a.get(i));
    }

}

System.out.println(d);
System.out.println(j);
System.out.println(y);
System.out.println(b);
}}
这是我已经写的代码,怎么实现记录手中相同牌数?
    还有如何用random的方法来打乱牌的顺序。
    求实际的代码!!
  • 写回答

3条回答 默认 最新

  • zhichouchan0056 2018-01-03 05:50
    关注

    /*按照您的要求,望采纳*/
    import java.util.*;
    public class Test {
    public static void main(String[] args) {
    String[] pai = new String[] { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K","A", "2" };
    String[] hs = new String[] { "♥", "♠", "♦", "♣" };
    List a = new ArrayList();
    for (int i = 0; i < pai.length; i++) {
    a.add( pai[i]);
    a.add( pai[i]);
    a.add( pai[i]);
    a.add( pai[i]);
    }
    a.add("大王");
    a.add("小王");
    //Collections.shuffle(a);
    a=shuffle(a);
    List j = new ArrayList();
    List y = new ArrayList();
    List b = new ArrayList();
    List d = new ArrayList();
    for (int i = 0; i < a.size(); i++) {
    if (i >= a.size() - 3) {
    d.add((String) a.get(i));
    } else if (i % 3 == 0) {
    j.add((String) a.get(i));
    } else if (i % 3 == 1) {
    y.add((String) a.get(i));
    } else if (i % 3 == 2) {
    b.add((String) a.get(i));
    }
    }

        System.out.println(d);
        duplicated(d);
        System.out.println(j);
        duplicated(j);
        System.out.println(y);
        duplicated(y);
        System.out.println(b);
        duplicated(b);
    }
    /*统计相同的牌*/
    static void duplicated(List list){
        ArrayList pai=new ArrayList(list.size());//已经抽到的牌
        int n[] =new int[list.size()];//记录每张抽到的牌的数量,下标和上面的集合一一对应s
        for(int i=0;i<list.size();i++){//遍历手中的牌 
            String s=(String)(list.get(i));
            if(!pai.contains(s))pai.add(s);         
            n[pai.indexOf(s)]++;//牌数+1
        }
        for(int i=0;i<pai.size();i++)
            System.out.print("点数:"+(String)(pai.get(i))+",张数:"+n[i]+" ");
        System.out.println("");
    }
    /*洗牌*/
    static List shuffle(List a){
        List temp=new ArrayList(a.size());//临时牌组,从a里面随机牌,放到temp中
        Random r=new Random();      
        while(a.size()>0){      //只要a中还有牌,则随机从a中抽牌加入temp中                                 
            int index=r.nextInt(a.size());//产生随机数
            temp.add((String) a.get(index));//将随机到的牌加入temp中               
            a.remove(index);//将抽到的牌从a中移除
        }
        return temp;
    }
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里