Java模拟实现斗地主功能
2019-07-22 22:33
633 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/MAX_YanBangbang/article/details/96905012
需要完成的功能
这里只完成创建扑克,发牌,看牌的功能,最终的实现斗地主功能还需进一步完善。
创建扑克
发牌的前提是有牌可发,所以我们要先创建一副牌,这里我们用的是HashMap集合来装扑克的花色以及点数;这样,我们就可以完成扑克的创建步骤。
String[] colos = {"♥", "♠", "♦", "♣"}; String[] nums = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K","A","2"}; HashMap<Integer, String> hashMappokerBox = new HashMap<>(); int index=0; for (String num : nums) { for (String colo : colos) { String concat = colo.concat(num); hashMappokerBox.put(index, concat); index++; } } //手动添加大小王 hashMappokerBox.put(index,"☽"); index++; hashMappokerBox.put(index,"☀");
洗牌
为了完成洗牌这一步骤,我们需要将HashMap中的键放在一个ArrayList集合中,这样通过洗键就将扑克洗好了
ArrayList<Integer> pokerBox = new ArrayList<>(); Set<Map.Entry<Integer, String>> entries = hashMappokerBox.entrySet(); for (Map.Entry<Integer, String> entry : entries) { Integer key = entry.getKey(); pokerBox.add(key); } //洗牌(3遍) Collections.shuffle(pokerBox);//使用默认随机源对指定列表进行置换,打乱顺序 Collections.shuffle(pokerBox); Collections.shuffle(pokerBox);
发牌
发到手中的扑克,我们希望是有序的,所以我们再将键集传给TreeSet集合中,利用TreeSet自动排序功能得到有序的扑克。
TreeSet<Integer> pokerPlayer1Index = new TreeSet<>(); TreeSet<Integer> pokerPlayer2Index = new TreeSet<>(); TreeSet<Integer> pokerPlayer3Index = new TreeSet<>(); TreeSet<Integer> lastPokerIndex = new TreeSet<>(); for (int i = 0; i < pokerBox.size(); i++) { if(pokerBox.size()-i<=3){ //底牌对应的键 lastPokerIndex.add(pokerBox.get(i)); }else if (i % 3 == 0) { //玩家一的牌对应的键 pokerPlayer1Index.add(pokerBox.get(i)); } else if (i % 3 == 1) { //玩家二的牌对应的键 pokerPlayer2Index.add(pokerBox.get(i)); } else { //玩家二的牌对应的键 pokerPlayer3Index.add(pokerBox.get(i)); } }
看牌
通过TreeSet中的值,也就是HashMap中的键集,可以得到对应的值
//看牌 { lookpoker(hashMappokerBox, pokerPlayer1Index,"洪世贤"); lookpoker(hashMappokerBox, pokerPlayer2Index,"艾丽"); lookpoker(hashMappokerBox, pokerPlayer3Index,"品如"); lookpoker(hashMappokerBox, lastPokerIndex,"地主多"); } private static void lookpoker(HashMap<Integer, String> hashMappokerBox, TreeSet<Integer> pokerPlayer1Index, String play1) { System.out.println(play1+"的牌"); for (Integer index : pokerPlayer1Index) { String s = hashMappokerBox.get(index); System.out.print(s+"\t"); } System.out.println(); }
玩家到手的扑克
洪世贤的牌 ♠3 ♥6 ♣6 ♥7 ♠7 ♦8 ♠9 ♦9 ♣9 ♥10 ♦J ♠Q ♦Q ♦K ♥A ♦A ♣2 艾丽的牌 ♦3 ♥4 ♦4 ♠5 ♦5 ♦7 ♠8 ♥9 ♠10 ♣10 ♥J ♣J ♥Q ♥K ♣A ♥2 ☽ 品如的牌 ♥3 ♣3 ♠4 ♣4 ♣5 ♠6 ♦6 ♣7 ♣8 ♦10 ♠J ♣Q ♠K ♣K ♠A ♦2 ☀ 地主多的牌 ♥5 ♥8 ♠2
相关文章推荐
- Java实现WinPcap+Wireshark数据抓包模拟联通客户端签到功能
- java模拟登录qq网站,实现一键签到等等功能
- Java小程序之集合框架模拟数据库实现用户登录和注册功能
- Java实现--模拟斗地主的洗牌和发牌
- Java利用动态代理模拟实现Spring的AOP(面向切面编程)功能的小实践
- java网络编程一:模拟qq聊天功能,实现一对一聊天
- Java实现模拟路由功能
- Java模拟QQ桌面截图功能实现方法
- 同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++/python/Java,结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品
- Java swing实现录音、播放、180多种乐器模拟、电子钢琴等功能
- Jsp+JavaBean+Servlet实现模拟银行账户存取款等功能的网站(实习第4-8天)
- java通过模拟post方式提交表单实现图片上传功能实例
- JAVA基础类与对象实现模拟火车站购票功能
- Java实现模拟路由功能
- Java小程序之集合框架模拟数据库实现用户登录和注册功能
- java中用HashMap,ArrayList,TreeMap实现一个模拟斗地主发牌的用例
- java简单模拟Scanner键盘扫描功能的实现
- Java集合实现斗地主功能
- Java中使用HashMap,TreeSet和List来实现模拟斗地主的洗牌和发牌的小例子
- java实现自定义注解并模拟密码验证功能