一、首先实现花色和数字
ArrayList<String> color=new ArrayList<>();//存放花色
color.add("");
color.add("");
color.add("");
color.add("");
ArrayList<String> number=new ArrayList<>();//存放各数字
for(int i=2;i<=10;i++){
number.add(i+"");
}
number.add("A");
number.add("J");
number.add("Q");
number.add("K");
二、将花色和数字结合起来,并使用map集合存储
//花色+数字
int index=0;
HashMap<Integer,String> map=new HashMap<>();//构成52张牌
for(String col:color){
for(String num:number){
map.put(index++,col+num);
}
}
map.put(index++,"🃏");//加入大小王
map.put(index++,"🃏");
三、将map集合再次用list存储并洗牌
//打乱shuffle ArrayList<Integer> cards=new ArrayList<>(); for(int i=0;i<54;i++)//模拟牌面数字 cards.add(i); //打乱shuffle:洗牌 Collections.shuffle(cards);
四、创建三个玩家并模拟发牌
//创建三个玩家 ArrayList<Integer> play1=new ArrayList(); ArrayList<Integer> play2=new ArrayList(); ArrayList<Integer> play3=new ArrayList(); ArrayList<Integer> sercret=new ArrayList();//底牌 //发牌 //总共54张:3个人轮流发:剩三张底牌 for(int i=0;i<cards.size();i++){ if(i>=51){ sercret.add(cards.get(i)); } else if (i%3==0) { play1.add(cards.get(i)); } else if (i%3==1) { play2.add(cards.get(i)); }else { play3.add(cards.get(i)); } }
四、将玩家手中的牌排序并输出
//对3个玩家手里牌进行排序 Collections.sort(play1); Collections.sort(play2); Collections.sort(play3); //输出每个玩家牌面信息 System.out.println("玩家1手里的牌:"); for(Integer car:play1){ System.out.print(map.get(car)+"\t"); } System.out.println(); System.out.println("玩家2手里的牌:"); for(Integer car:play2){ System.out.print(map.get(car)+"\t"); } System.out.println(); System.out.println("玩家3手里的牌:"); for(Integer car:play3){ System.out.print(map.get(car)+"\t"); } System.out.println(); System.out.println("底牌:"); for(Integer car:sercret){ System.out.print(map.get(car)+"\t"); }
五、整体实现代码如下
import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Map; public class doudizhu { public static void main(String[] args) { //牌面:花色+数字 ArrayList<String> color=new ArrayList<>(); color.add("♠"); color.add("♦"); color.add("♥"); color.add("♣"); ArrayList<String> number=new ArrayList<>(); for(int i=2;i<=10;i++){ number.add(i+""); } number.add("A"); number.add("J"); number.add("Q"); number.add("K"); //花色+数字 int index=0; HashMap<Integer,String> map=new HashMap<>();//构成52张牌 for(String col:color){ for(String num:number){ map.put(index++,col+num); } } map.put(index++,"🃏");//加入大小王 map.put(index++,"🃏"); //打乱shuffle ArrayList<Integer> cards=new ArrayList<>(); for(int i=0;i<54;i++)//模拟牌面数字 cards.add(i); //打乱shuffle:洗牌 Collections.shuffle(cards); //创建三个玩家 ArrayList<Integer> play1=new ArrayList(); ArrayList<Integer> play2=new ArrayList(); ArrayList<Integer> play3=new ArrayList(); ArrayList<Integer> sercret=new ArrayList(); //发牌 //总共54张:3个人轮流发:剩三张底牌 for(int i=0;i<cards.size();i++){ if(i>=51){ sercret.add(cards.get(i)); } else if (i%3==0) { play1.add(cards.get(i)); } else if (i%3==1) { play2.add(cards.get(i)); }else { play3.add(cards.get(i)); } } //对3个玩家手里牌进行排序 Collections.sort(play1); Collections.sort(play2); Collections.sort(play3); //输出每个玩家牌面信息 System.out.println("玩家1手里的牌:"); for(Integer car:play1){ System.out.print(map.get(car)+"\t"); } System.out.println(); System.out.println("玩家2手里的牌:"); for(Integer car:play2){ System.out.print(map.get(car)+"\t"); } System.out.println(); System.out.println("玩家3手里的牌:"); for(Integer car:play3){ System.out.print(map.get(car)+"\t"); } System.out.println(); System.out.println("底牌:"); for(Integer car:sercret){ System.out.print(map.get(car)+"\t"); } } }
六、运行结果如下:
第一次写博客呀,希望大家多多鼓励,如果有什么疑问或者更好的想法欢迎评论区讨论呀。