- 要求:模拟斗地主的,需要实现:程序每次运行,三个玩家都能依次拿到相同张数的牌,以及对应的底牌,从小到大打印
- 牌的显示由花色+牌号组成:eg:♦J,♣5,♥6,♠A
- */
- 上代码…
/*
* 要求:模拟斗地主的,需要实现:程序每次运行,三个玩家都能依次拿到相同的牌,以及底牌,从小到大打印
* 牌的显示由花色+牌号组成:eg:♦J,♣5,♥6,♠A
*
*
* 思路:
* 第一步:用TreeSet<Interger,String>集合存储一副牌,用ArrayList<Interger>存储[0-54)个数字
* 第二步:用4个TreeSet集合模拟3个玩家和 底牌
* 第三步:用集合Collectioins.shuffle(ArrayList)对其进行洗牌。
* 第四步:遍历arrayList集合,依次存入三个玩家中,根据TreeSet集合特点,自然排序存储元素。
* 第五步:遍历三个集合元素以及底牌元素,根据K值找到对应的v值
* */
import java.util.*;
public class MainCode {
public static void main(String[] args) {
//* 第一步:用TreeSet<Interger,String>集合存储一副牌,用ArrayList<Interger>存储[0-54)个数字
HashMap<Integer,String> pai = new HashMap<Integer, String>();
ArrayList<Integer> xuhao = new ArrayList<>();
String[] huaSe = {"♦","♣","♥","♠"};
String[] shuZi = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
int num = 0;
for(String sz:shuZi){
for(String hs:huaSe){
pai.put(num,hs+sz);
xuhao.add(num);
num++;
}
}
pai.put(52,"小王");
xuhao.add(num);
num++;
pai.put(53,"大王");
xuhao.add(num);
//* 第二步:用4个TreeSet集合模拟3个玩家和 底牌
TreeSet<Integer> sb1 = new TreeSet<>();
TreeSet<Integer> sb2 = new TreeSet<>();
TreeSet<Integer> sb3 = new TreeSet<>();
//留底
TreeSet<Integer> sb4 = new TreeSet<>();
//* 第三步:用集合Collectioins.shuffle(ArrayList)对其进行洗牌。
Collections.shuffle(xuhao);
//* 第四步:遍历arrayList集合,依次存入三个玩家中,根据TreeSet集合特点,自然排序存储元素。
for(int i=0;i<xuhao.size()-3;i++){
if(i%3==0){
sb1.add(xuhao.get(i));
}else if(i%3==1){
sb2.add(xuhao.get(i));
}else{
sb3.add(xuhao.get(i));
}
}
sb4.add(xuhao.get(51));
sb4.add(xuhao.get(52));
sb4.add(xuhao.get(53));
//* 第五步:遍历三个集合元素以及底牌元素,根据K值找到对应的v值
show(pai,sb1, 1);
show(pai,sb2, 2);
show(pai,sb3, 3);
show(pai,sb4, 4);
}
//打印方法,参数1:整副牌 参数2:排配的序号 参数3:玩家编号
private static void show(HashMap<Integer,String> pai,TreeSet<Integer> sb,int i) {
if(i==4){
System.out.print("底牌:");
}else{
System.out.print("玩家"+i+"的牌是:");
}
for(Integer s:sb){
//根据K值找V值
String str = pai.get(s);
System.out.print(str+" ");
}
System.out.println();
}
}
效果图


本文介绍了一款斗地主游戏模拟器的实现过程,使用Java编程语言,通过TreeSet和ArrayList集合管理牌堆和玩家手牌,实现了游戏的洗牌、发牌和展示功能,确保每局游戏中每位玩家获得相同数量的牌。
754

被折叠的 条评论
为什么被折叠?



