斗地主案例
分析
1、准备牌:54张牌,存储到一个集合中
特殊牌:大王,小王
其他52张牌:
定义一个数组/集合,存储4种花色:♠,♥,♣,♦
定义一个数组/集合,存储13个序号:2,A,K...3
循环嵌套遍历两个数组/集合,组装52张牌
♠2,♠A,♠K...♠3,♥2,♥A,♥K...♥3
....
2.洗牌
使用集合工具类Collections的方法
static void shuffle(List<?> list) 使用指定的随机源对指定列表进行置换。
会随机的打乱集合中元素的顺序
3.发牌
要求:1人17张牌,剩余3张作为底牌,一人一张轮流发牌:集合的索引(0-53)%3
定义4个集合,存储3个玩家的牌和底牌
索引%2,有两个值(0,1) 0%2=0 1%2=1 2%2=0 3%2=1
索引%3,有三个值(0,1,2) 0%3=0 1%3=1 2%3=2 3%3=0
索引>=51 改底牌发牌
4.看牌
直接打印集合,遍历存储玩家和底牌的集合
public class DouDiZhu { public static void main(String[] args) { ArrayList<String> poker = new ArrayList<>(); //创建花色 String[] color = {"♦","♠","♥","♣"}; //创建点数 String[] num = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"}; //存入HasMap poker.add("大王"); poker.add("小王"); for (String numa : num){ for (String col : color){ poker.add(col+numa); } } //洗牌 Collections.shuffle(poker); //玩家和底牌 TreeSet<String> Tset1 = new TreeSet<>(); TreeSet<String> Tset2 = new TreeSet<>(); TreeSet<String> Tset3 = new TreeSet<>(); TreeSet<String> Dset4 = new TreeSet<>(); //分牌 for (int i = 0; i < poker.size(); i++) { String integer = poker.get(i); if (i>=51){ Dset4.add(integer); }else if (i%3==0){ Tset1.add(integer); }else if (i%3==1){ Tset2.add(integer); }else if (i%3==2){ Tset3.add(integer); } } lookPoker("张三",Tset1); lookPoker("李四",Tset2); lookPoker("王五",Tset3); lookPoker("底牌",Dset4); } public static void lookPoker(String name, TreeSet<String> play) { System.out.print(name + "的牌是:"); for (String i : play) { System.out.print(i + " "); } System.out.println(""); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix