第一回写,见谅。
话不多说直接上代码
package com.doudizhu;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Random;
import java.util.Scanner;
import java.util.TreeSet;
/**
* @Description
* @author sy email:869181257@qq.com
* @version
* @date Dec 22, 20202:17:56 PM
*/
public class Demo4 {
/*
* 斗地主的洗牌和发牌
*/
//1.有一副扑克,54张牌,4种花色(345678910JQKA2),大小王
public static void main(String[] args) {
String[] num= {"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
String[] color= {"方片","梅花","红桃","黑桃"};
ArrayList<Integer> list=new ArrayList<>();
HashMap<Integer, String> hm=new HashMap<>();
int index=0;
for (String s1 : num) {
for (String s2 : color) {
hm.put(index, s2.concat(s1));
list.add(index);
index++;
}
}
hm.put(index, "大王");
list.add(index);
index++;
hm.put(index, "小王");
// 给数字上色,放入集合中。给index下标。
//洗牌功能
Collections.shuffle(list);
//发牌
TreeSet<Integer> gaojin=new TreeSet<>();
TreeSet<Integer> runfa=new TreeSet<>();
TreeSet<Integer> me=new TreeSet<>();
TreeSet<Integer> dipai=new TreeSet<>();
for (int i = 0; i < list.size(); i++) {
if(i>=list.size()-3) {
dipai.add(list.get(i));
}else if(i%3==0) {
gaojin.add(list.get(i));
}else if(i%3==1) {
runfa.add(list.get(i));
}else {
me.add(list.get(i));
}
}
lookPoker("高进",gaojin,hm);
lookPoker("周润发",runfa,hm);
lookPoker("付哥",me,hm);
lookPoker("底牌",dipai,hm);
}
public static void lookPoker(String name,TreeSet<Integer> ts,HashMap<Integer,String> hm) {
System.out.println(name+"的牌是:");
for (Integer index : ts) {
System.out.print(hm.get(index)+" ");
}
System.out.println();
}
}
洗牌直接用的是
Collections集合下的shuffle();方法,这个跟现实中同等概率洗牌差不多。也非常的方便。