天天看點

Java 集合實作 鬥地主洗牌和發牌,看牌

1、建立一個HashMap 集合   在Map中存儲鍵值對,

鍵是索引值,值是花色和點數組成的字元串,索引用來指定派,利用索引進行洗牌操作

2、建立一個ArrayList,用來存放牌的編号

3、建立花色數組和點數數組

4、從 1 編号 開始向 HashMap 中存放相應的編号和對應的牌,同時往 ArrayList  中存儲編号

5、洗牌(洗的    是編号)

6、發牌(發的是編号,為了保證編号時有序的,應該建立一個TreeSet集合)

7、看牌(周遊 TreeSet,擷取編号,然後從HashMap中找到對應的牌)

package poke;

import java.util.ArrayList;

import java.util.Collections;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

public class Demo01 {

    public static void main(String[] args) {

        //建立一個  ArrayList 用于存放 撲克牌的序号 

        ArrayList<Integer> pokerNum = new ArrayList<>();

        //建立一個HashMap 用于存放撲克牌 

        HashMap<Integer, String> poker = new HashMap<>();

        //建立一個 ArrayList 用于存放底牌

        ArrayList<Integer> dipai = new ArrayList<>();

        Person p1 = new Person("小紅");

        Person p2 = new Person("小明");

        Person p3 = new Person("小白");

        String[] colors = {"♠","♥","♣","♦"};

        String[] numbers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};

        int count = 1;

        for(String number : numbers) {

            for(String color : colors) {

                poker.put(count, color.concat(number));

                pokerNum.add(count);

                count++;

            }

        }

        poker.put(count, "小王");

        pokerNum.add(count++);

        poker.put(count, "大王");

        pokerNum.add(count++);

        //System.out.println(poker);

        //洗牌

        Collections.shuffle(pokerNum);

        System.out.println(pokerNum);

        //發牌

        for(int i = 0 ;i<pokerNum.size();i++) {

            if(i >=pokerNum.size() -3) {

                dipai.add(pokerNum.get(i));

            }else {

                if(i % 3 == 0) {

                    p1.setPokers(pokerNum.get(i));

                }

                if(i % 3 == 1) {

                    p2.setPokers(pokerNum.get(i));

                }

                if (i % 3 == 2 ) {

                    p3.setPokers(pokerNum.get(i));

                }

            }

        }

        //System.out.println(p1);

        lookPokers(p1, poker);

        lookPokers(p2, poker);

        lookPokers(p3, poker);

        lookDiPai(dipai, poker);

    }

    //看牌

    public static void lookPokers(Person person,Map<Integer, String> map) {

        int count = person.getPokers().size();

        System.out.println(person.getName() + "的牌是:" + person.getName() + "共有" + count + "張牌" );

        for(int i = 0;i<count;i++) {

            System.out.print(map.get(person.getPokers().get(i)) + "  ");

        }

        System.out.println();

    }

    public static void lookDiPai(List<Integer> list,Map<Integer, String> map) {

        System.out.println("底牌是:");

        for(int i = 0;i<list.size();i++) {

            System.out.print(map.get(list.get(i)) + "  ");

        }

        System.out.println();

    }

}

繼續閱讀