zoukankan      html  css  js  c++  java
  • Java-->简单的斗地主发牌流程

    package com.dragon.java.hwddz;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    /*1. 写一个可以给斗地主三家随机发牌的程序。   
     a:牌可以随机发给三个玩家   
     b:在控制台打印每个玩家的牌。   
     c:对每个玩家手中的牌按照大写排序。
     ```
     牌的花色:"♠", "♥", "♣", "♦" 
     *思路:创建一个容器存储所有的牌,再创建三个容器分别表示三个用户的牌,三个用户轮流从第一个容器中取牌,
     *剩下三张为底牌。把大王和小王也算进去**/
    public class Test {
        public static void main(String args[]) {
            Map<Integer, String> mapPoker = new HashMap<>();
            List<Integer> listIndex = new ArrayList<>();
    
            Poker.setPoker(mapPoker, listIndex);
    
            Poker.washPoker(listIndex);
    
         
    // 定义用户 Player[] players = new Player[3]; players[0] = new Player("躺之徳"); players[1] = new Player("小剪"); players[2] = new Player("呆立叫");      
         // 用户容器 List
    <Integer> tzd = new ArrayList<>(); List<Integer> xj = new ArrayList<>(); List<Integer> dlj = new ArrayList<>(); List<Integer> dp = new ArrayList<>(); Player.getPoker(tzd, xj, dlj, dp, listIndex); // int index = Player.getMaxNumber(players); // System.out.println(players[index].getName() + "抢到了地主!"); players[0].showPoker(tzd, mapPoker); players[1].showPoker(xj, mapPoker); players[2].showPoker(dlj, mapPoker); // players[index].showDp(dp, mapPoker); System.out.println(" " + "底牌:"); for (Integer integer : dp) { System.out.print(mapPoker.get(integer) + " "); } } }

    --> Poker类用于存入54张扑克牌

    package com.dragon.java.hwddz;
    
    import java.util.Collections;
    import java.util.List;
    import java.util.Map;
    
    public class Poker {
        private static String[] pokerColor = { "♠", "♥", "♣", "♦" };
        private static String[] pokerNum = { "3", "4", "5", "6", "7", "8", "9",
                "10", "J", "Q", "K", "A", "2" };
      
       // 存入54张不同的牌,并给每张牌一个标号
    public static void setPoker(Map<Integer, String> mapPoker, List<Integer> listIndex) { int index = 0; for (String nums : pokerNum) { for (String colors : pokerColor) { String poker = colors.concat(nums); mapPoker.put(index, poker); listIndex.add(index); index++; } } mapPoker.put(index, "大☝王"); listIndex.add(index); index++; mapPoker.put(index, "小☟王"); listIndex.add(index); }
       // 洗牌 --> 即洗标号
    public static void washPoker(List<Integer> listIndex) { Collections.shuffle(listIndex); } }

    --> Player类对玩家进行发牌和显示处理(写完我就后悔了,J,Q,K,A,2的排序太low了..package com.dragon.java.hwddz;

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    import java.util.Map;
    import java.util.Random;
    
    public class Player {
        private String name;
    
        Player() {
            super();
        }
    
        Player(String name) {
            super();
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
       // 发牌流程
    public static void getPoker(List<Integer> player1, List<Integer> player2, List<Integer> player3, List<Integer> dp, List<Integer> list) { for (int i = 0; i < list.size(); i++) { if (i >= list.size() - 3) { dp.add(list.get(i)); } else if (i % 3 == 1) { player1.add(list.get(i)); } else if (i % 3 == 2) { player2.add(list.get(i)); } else if (i % 3 == 0) { player3.add(list.get(i)); } } }
       // 显示牌面
    public void showPoker(List<Integer> list, Map<Integer, String> mapPoker) { System.out.println(" " + name + "的手牌是:"); List<String> listPoker = new ArrayList<>(); for (Integer key : list) { listPoker.add(mapPoker.get(key)); } Collections.sort(listPoker, new MyComparator()); for (String string : listPoker) { System.out.print(string + " "); } } // public void showDp(List<Integer> dp, Map<Integer, String> mapPoker) { // List<String> listPoker = new ArrayList<>(); // for (Integer key : dp) { // listPoker.add(mapPoker.get(key)); // } // Collections.sort(listPoker, new MyComparator()); // for (String string : listPoker) { // System.out.print(string + " "); // } // } public int throwsElbows() { Random random = new Random(); int num = random.nextInt(6) + 1; System.out.println(name + "摇了" + num + "点"); return num; } // 请忽略下面注释... // public static int getMaxNumber(Player[] players) { // List<Integer> numbers = new ArrayList<>(); // for (int i = 0; i < players.length; i++) { // numbers.add(players[i].throwsElbows()); // } // Collections.sort(numbers); // for (int i = 0; i < numbers.size() - 1; i++) { // if (numbers.get(numbers.size() - 1) == numbers.get(i)) { // System.out.println(players[numbers.size() - 1].name + "和" // + players[i].name + "摇的点数相同"); // System.out.println("他们打了一架! --> " + players[i].name + "赢了!"); // return i; // } // } // return numbers.size() - 1; // }

      
    // 牌面的比较排序 --> 看得就烦... public static class MyComparator implements Comparator<String> { @Override public int compare(String o1, String o2) { String m1 = o1.substring(1, 2); String m2 = o2.substring(1, 2); if (m1.equals("1")) { m1 = "a"; } else if (m1.equals("J")) { m1 = "b"; } else if (m1.equals("Q")) { m1 = "c"; } else if (m1.equals("K")) { m1 = "d"; } else if (m1.equals("A")) { m1 = "e"; } else if (m1.equals("2")) { m1 = "f"; } if (m2.equals("1")) { m2 = "a"; } else if (m2.equals("J")) { m2 = "b"; } else if (m2.equals("Q")) { m2 = "c"; } else if (m2.equals("K")) { m2 = "d"; } else if (m2.equals("A")) { m2 = "e"; } else if (m2.equals("2")) { m2 = "f"; } return m1.compareTo(m2); } } }

    --> 写完发现逻辑是不是有问题啊...

  • 相关阅读:
    玩转JavaScript module pattern精髓
    玩转Javascript 给JS写测试
    Feature Toggle JUnit
    状态机模式实战
    Java静态类
    Guava增强for循环
    Spring Security使用心得
    听个响
    Geoserver2.16.2初步使用
    GeoWebCache1.10.5发布arcgis瓦片服务
  • 原文地址:https://www.cnblogs.com/xmcx1995/p/5767511.html
Copyright © 2011-2022 走看看