JAVA单排日记-2020/1/9-斗地主案例(双列)

在这里插入图片描述

自己写的

import java.util.*;

public class Demo01 {
    public static void main(String[] args) {
        List<String> style = List.of("♣", "♥", "♠", "♦");
        List<String> num = List.of("3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2");
        List<Integer> Index = new ArrayList<>();
        Map<Integer, String> card1 = new HashMap<>();
        int a = 0;

        for (int i = 0; i < num.size(); i++) {
            for (int i1 = 0; i1 < style.size(); i1++) {
                a += 1;
                card1.put(a, style.get(i1) + num.get(i));
                Index.add(a);
            }
        }
        card1.put(++a, "小王");
        Index.add(a);
        card1.put(++a, "大王");
        Index.add(a);


        System.out.println(card1);
        System.out.println(Index);

        Collections.shuffle(Index);

        Map<Integer, String> one = new HashMap<>();
        List<Integer> oneIndex = new ArrayList<>();
        Map<Integer, String> two = new HashMap<>();
        List<Integer> twoIndex = new ArrayList<>();
        Map<Integer, String> three = new HashMap<>();
        List<Integer> threeIndex = new ArrayList<>();
        ArrayList<String> left = new ArrayList<>();

        for (int i = 0; i < Index.size(); i++) {
            if (i < Index.size() - 3) {
                if (i % 3 == 0) {
                    one.put(Index.get(i), card1.get(Index.get(i)));
                    oneIndex.add(Index.get(i));
                } else if (i % 3 == 1) {
                    two.put(Index.get(i), card1.get(Index.get(i)));
                    twoIndex.add(Index.get(i));
                } else {
                    three.put(Index.get(i), card1.get(Index.get(i)));
                    threeIndex.add(Index.get(i));
                }
            } else {
                left.add(card1.get(Index.get(i)));
            }
        }
        System.out.println(one);
        System.out.println(two);
        System.out.println(three);
        System.out.println(left);

        Collections.sort(oneIndex);
        Collections.sort(twoIndex);
        Collections.sort(threeIndex);

        List<String> onenew = new ArrayList<>();
        List<String> twonew = new ArrayList<>();
        List<String> threenew = new ArrayList<>();

        for (int i = 0; i < oneIndex.size(); i++) {
            onenew.add(one.get(oneIndex.get(i)));
        }
        for (int i = 0; i < twoIndex.size(); i++) {
            twonew.add(two.get(twoIndex.get(i)));
        }
        for (int i = 0; i < threeIndex.size(); i++) {
            threenew.add(three.get(threeIndex.get(i)));
        }
        System.out.println(onenew);
        System.out.println(twonew);
        System.out.println(threenew);
        System.out.println(left);
    }
}

在这里插入图片描述

反思:不应该把思想极限在对Map牌本身进行操作,应该先针对Map牌映射的List序列进行操作,再把对操作后的List映射回Map牌中

在这里插入图片描述

import java.util.*;

public class Demopoke {
    public static void main(String[] args) {
        List<String> num =  List.of("3","4","5","6","7","8","9","10","j","Q","K","A","2");
        List<String> style =  List.of("♥","♦","♣","♠");
        Map<Integer,String> card = new HashMap<>();
        List<Integer> num2 = new ArrayList<>();
        int a= 1;

        for (int i = 0; i <num.size(); i++) {
            for (int j = 0; j <style.size(); j++) {
                card.put(a,style.get(j)+num.get(i));
                num2.add(a);
                a++;
            }
        }

        card.put(a,"小王");
        num2.add(a++);
        card.put(a,"大王");
        num2.add(a);

        Collections.shuffle(num2);

        List<Integer> play1 = new ArrayList<>();
        List<Integer> play2 = new ArrayList<>();
        List<Integer> play3 = new ArrayList<>();

        for (int i = 0; i <num2.size(); i++) {
            if (i%3==0){
                play1.add(num2.get(i));
            }else if (i%3==1){
                play2.add(num2.get(i));
            }else {
                play3.add(num2.get(i));
            }
        }

        Collections.sort(play1);
        Collections.sort(play2);
        Collections.sort(play3);

        lookpoke(play1,card);
        lookpoke(play2,card);
        lookpoke(play3,card);
    }

    public static void lookpoke(List<Integer> play,Map<Integer,String> card){
        ArrayList<String> card1= new ArrayList<>();
        for (Integer i : play){
            card1.add(card.get(i));
        }
        System.out.println(card1);
    }
}

在这里插入图片描述

精髓不在用Map集合,而是“映射”,其实用不用Map<k,v>集合都可以

import java.util.*;

public class Demo {
    public static void main(String[] args) {
        List<String> num = List.of("3", "4", "5", "6", "7", "8", "9", "10", "j", "Q", "K", "A", "2");
        List<String> style = List.of("♥", "♦", "♣", "♠");
        /*        Map<Integer,String> card = new HashMap<>();*/
        List<String> card = new ArrayList<>();
        List<Integer> num2 = new ArrayList<>();
        int a = 0;

        for (int i = 0; i < num.size(); i++) {
            for (int j = 0; j < style.size(); j++) {
                card.add(style.get(j) + num.get(i));
                num2.add(a);
                a++;
            }
        }

        card.add("小王");
        num2.add(a++);
        card.add("大王");
        num2.add(a);

        Collections.shuffle(num2);

        List<Integer> play1 = new ArrayList<>();
        List<Integer> play2 = new ArrayList<>();
        List<Integer> play3 = new ArrayList<>();
        List<Integer> left = new ArrayList<>();

        for (int i = 0; i < num2.size(); i++) {
            if (i < 51) {
                if (i % 3 == 0) {
                    play1.add(num2.get(i));
                } else if (i % 3 == 1) {
                    play2.add(num2.get(i));
                } else {
                    play3.add(num2.get(i));
                }
            } else {
                left.add(num2.get(i));
            }
        }

        Collections.sort(play1);
        Collections.sort(play2);
        Collections.sort(play3);
        Collections.sort(left);

        lookpoke(play1, card);
        lookpoke(play2, card);
        lookpoke(play3, card);
    }

    public static void lookpoke(List<Integer> play, List<String> card) {
        ArrayList<String> playcard = new ArrayList<>();
        for (Integer i : play) {
            playcard.add(card.get(i));
        }
        System.out.println(playcard);
    }
}

在这里插入图片描述

发布了90 篇原创文章 · 获赞 1 · 访问量 2049

猜你喜欢

转载自blog.csdn.net/wangzilong1995/article/details/103902150