斗地主案例的分析与实践
斗地主案例的分析
按照斗地主的规则,完成洗牌发牌的动作。
具体规则:
使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
1、准备牌,将54张牌存储到一个集合中。
特殊牌:大王、小王
分别定义数组或者集合存储四种花色以及排的序号
使用循环嵌套遍历这两个数组或者集合,使用字符串拼接再存储到新的数组或者集合中。
最后再添加大王、小王
2、洗牌
可以使用集合工具类的Collections的shuffle( )方法,会随机打乱集合中元素的顺序
3、发牌
要求:1人17张牌,最后剩余3张作为底牌,一人一张轮流发牌,让集合的索引%3;
定义4个集合,用来存储3个玩家的牌和底牌
索引%3为0时添加到第一个集合
索引%3为1时添加到第二个集合
索引%3为2时添加到第三个集合
当索引大于等于51时,添加到底牌集合
4、看牌
直接打印集合,或者遍历存储玩家和底牌的集合
斗地主案例实践
/** * 斗地主综合案例: * 1、准备牌 * 2、洗牌 * 3、发牌 * 4、看牌 */ public class DouDiZhu { public static void main(String[] args) { //准备牌 List<String> list = new ArrayList<>(); String[] arr = {"♠","♥","♣","♦"}; String[] arr1 = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; list.add("大王"); list.add("小王"); for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr1.length; j++) { list.add(arr[i]+arr1[j]); } } //洗牌 Collections.shuffle(list); //发牌 List<String> one = new ArrayList<>(); List<String> two = new ArrayList<>(); List<String> three = new ArrayList<>(); List<String> dipai = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { if (i>=51){ dipai.add(list.get(i)); }else { if (i%3==0){ one.add(list.get(i)); }else if (i%3==1){ two.add(list.get(i)); }else if (i%3==2){ three.add(list.get(i)); } } } System.out.println("张三:"+one); System.out.println("李四:"+two); System.out.println("王五:"+three); System.out.println("底牌:"+dipai); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix