1.生成54张扑克牌
2.将54张随机洗牌
3.三个玩家参与游戏,将牌发给三个玩家,最后三张做底牌
4.查看三人手中各自的牌以及底牌
package Doudizhu;
import java.util.*;
//模拟斗地主步骤
/*
*1.买牌
* 2.洗牌
* 3.发牌
* 4.看牌*/
public class Maipai {
public static void main(String[] args) {
//1.定义一个双链集合,键表示编号,值表示具体的牌
Map<Integer,String> m=new HashMap<>();
//2.定义一个单列集合,用来存贮具体牌的编号
List<Integer> list=new ArrayList<>();
int num=0;//表示牌的编号
//3.具体的买牌动作
//普通牌
String[] colors={"♠","♥","♣","♦"};
String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
for (String number : numbers) {
//外循环获取所有的点数
for (String color : colors) {
//内循环获取花色
String poker =color + number;
//将牌的编号,具体的牌放在双列集合中
m.put(num,poker);
//将牌的编号放到单列集合中
list.add(num);
num++;
}
}
//添加大小王
m.put(num,"小王");
list.add(num++);
m.put(num,"大王");
list.add(num);
System.out.println("所有的牌:"+m);
System.out.println("牌的编号:"+list);
//洗牌
Collections.shuffle(list);
System.out.println("洗完后牌的编号为:"+list);
//发牌
//定义四个集合分别表示三个玩家和底牌
List<Integer> tangsan = new ArrayList<>();
List<Integer> xiaowu = new ArrayList<>();
List<Integer> aosika = new ArrayList<>();
List<Integer> dipai = new ArrayList<>();
for (int i = 0; i <list.size() ; i++) {
//获取编号
Integer pokernum = list.get(i);
if(i>=list.size()-3){
dipai.add(pokernum);
}else if(i%3==0){
tangsan.add(pokernum);
}else if(i%3==1){
xiaowu.add(pokernum);
}else if(i%3==2){
aosika.add(pokernum);
}
}
//查看玩家发到的牌
System.out.println("tangsan:"+printPoker(tangsan,m));
System.out.println("xiaowu:"+printPoker(xiaowu,m));
System.out.println("aosika:"+printPoker(aosika,m));
System.out.println("dipai:"+printPoker(dipai,m));
}
//定义一个方法,用来看牌
public static String printPoker(List<Integer> nums,Map<Integer,String> pokers){
//对牌的编号进行升序排列
Collections.sort(nums);
//遍历集合获取每一个编号
StringBuilder sb=new StringBuilder();
for (Integer num : nums) {
String poker=pokers.get(num);
//将获取到的牌拼接
sb.append(poker+" ");
}
String str =sb.toString();
return str.trim();
}
}
输出: