早期使用的JavaSE用到的技术栈有:Map集合,数组,set集合,只是简单实现了斗地主的模拟阶段,感兴趣的小伙伴可以调试增加功能
代码如下:
import java.util.*;
public class Poker {
public static void main(String[] args){
/*
数字对应编号
*/
Map<Integer,String> pokermap = new HashMap<>();
/*
记录54个牌的编号
*/
List<Integer> pokernumber = new ArrayList<>();
/*
1.准备牌的阶段
0--大王,,1--小王
*/
int ideax=0;//初始化扑克牌编号
pokermap.put(ideax,"大王");
pokernumber.add(ideax);
ideax++;
pokermap.put(ideax,"小王");
pokernumber.add(ideax);
ideax++;
String[] color = {"♣","♦","♥","♠"};
String[] number = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
for (int i = 0; i <number.length; i++) {
for (int j=0;j<color.length;j++){
pokermap.put(ideax,color[j]+number[i]);
pokernumber.add(ideax);
ideax++;
}
}
/*
2.洗牌阶段
利用collections工具类解决
*/
Collections.shuffle(pokernumber);//随机打乱顺序
//System.out.println(pokernumber);
/*
3.发牌阶段
*/
//定义三个玩家和底牌
TreeSet<Integer> player1 = new TreeSet<>();
TreeSet<Integer> player2 = new TreeSet<>();
TreeSet<Integer> player3= new TreeSet<>();
TreeSet<Integer> dp= new TreeSet<>();
for (int i = 0; i <pokernumber.size(); i++) {
if(i>50){
dp.add(pokernumber.get(i));
} else if (i%3==0) {
player1.add(pokernumber.get(i));
} else if (i%3==1) {
player2.add(pokernumber.get(i));
} else if (i%3==2) {
player3.add(pokernumber.get(i));
}
}
/*
4.用户玩家看牌阶段
*/
lookpoker("张三",player1,pokermap);
lookpoker("李四",player2,pokermap);
lookpoker("IU",player3,pokermap);
lookpoker("底牌",dp,pokermap);
}
private static void lookpoker(String name, TreeSet<Integer> player, Map<Integer, String> pokermap) {
System.out.println(name+"手中的牌为:");
for(Integer pokerNumber : player){
String poker = pokermap.get(pokerNumber);
System.out.print(poker);
}
System.out.println();
}
}