斗地主之简单代码实现

思路:

1.先要实现洗牌;

2.然后去实现给每一个玩家发牌;

3.最后,再到每一个玩家看牌。

代码如下:

import java.util.*;

public class Poker {
    public static void main(String[] args) {
        HashMap<Integer, String> hm = new HashMap<Integer, String>();
        ArrayList<Integer> array = new ArrayList<Integer>();
//        字符串数组来装牌的花色
        String[] color = {"♦","♣","♥","♠"};
//        字符串数组来装牌的大小
        String[] num = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        int index = 0;
//        一定是外层循环是牌的大小,内层循环是花色
        for (String num1 : num) {
            for (String color1 : color) {
                hm.put(index,color1+num1);
                array.add(index);
                index++;
            }
        }
        hm.put(index,"小王");
        array.add(index);
        index++;
        hm.put(index,"大王");
        array.add(index);
//        实现洗牌
        Collections.shuffle(array);
//        用TreeSet来实现对牌的排序
        TreeSet<Integer> player1 = new TreeSet<Integer>();
        TreeSet<Integer> player2 = new TreeSet<Integer>();
        TreeSet<Integer> player3 = new TreeSet<Integer>();
        TreeSet<Integer> dp = new TreeSet<Integer>();
        for (int i = 0; i < array.size() ; i++) {
            int s = array.get(i);
//            最后三张就是底牌
            if (i >= array.size()-3) {
                dp.add(s);
            }else if (i % 3 == 0) {
                player1.add(s);
            }else if (i % 3 == 1) {
                player2.add(s);
            }else if (i % 3 == 2) {
                player3.add(s);
            }
        }

        lookPoker("张三",player1,hm);
        lookPoker("李四",player2,hm);
        lookPoker("王二麻子",player3,hm);
        lookPoker("底牌",dp,hm);
    }
    public static void lookPoker(String name,TreeSet<Integer> t,HashMap<Integer,String> hm) {
        System.out.println(name+"的牌是:");
        for (Integer key : t) {
            String poker = hm.get(key);
            System.out.print(poker + " ");
        }
        System.out.println();
    }
}

运行结果如下:

总结:

      定义一个HashMap和ArrayList,HashMap用来装牌的索引和牌,ArrayList装牌的索引,运用数组将索引与牌的大小相结合;再用Collections中的方法来实现洗牌,用TreeSet集合来接收三个玩家的牌和底牌,实现发牌,最后定义看牌的方法,再调用,这样就实现斗地主的简单版了。

  


版权声明:本文为qq_62443736原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。