斗地主 (3人斗地主) 通过程序将发牌过程实现,用到 Map 和 List集合

一·Map集合特点 : key-value形式 ,key唯一不能重复 .
二 List集合特点:一副牌 54张,4种花色 , 大小王 , J Q K A ,其他是 2,3,4…10
思路如下:

package com.hp.game;


import java.util.*;

/**
 * 1. 用map存储 牌的信息
 *     key 存储  1-54张的编号 ;  value 就是 花色+数字 组合牌的信息
 *
 * 2. 用list    集合 存储 1-54张的编号
 *
 * 3. 用2个数组 分别存储 4种花色  和 A ,2,3...J,Q ,K
 *
 * 4. 将 牌的具体内容放到 map和list
 *
 * 5. 发牌
 *
 * 6. 看牌
 */
public class Game {
    public static void main(String[] args) {
     //   1. 用map存储 牌的信息
        Map<Integer,String> map=new HashMap<>();
        // key 存储  1-54张的编号 ;  value 就是 花色+数字 组合牌的信息
        List<Integer> list=new ArrayList<>();
        //用两个数组储存花色和13张牌
        String[]colors={"♠","♣","♥","♦"};
        String[]numbers={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};

        int index = 0;//记录编号
        //将牌的信息放到上面的集合里面
        //利用for循环
        //共循环4 * 13 = 52 次
        for (String num:numbers){
            for (String col:colors){
                map.put(index,col+num);
                list.add(index);
                index++;

            }

        }
        System.out.println("index="+index);

        //剩下的两个编号就是大小王了
        list.add(53);
        list.add(54);

        map.put(53,"大王");
        map.put(54,"小王");


        //发牌之前我们需要先把牌打乱对吧!组成随机 "数组"!
        //shuffle  洗牌。。。。。
        Collections.shuffle(list);
        //发牌开始(打牌的为三人,同时呢还要留三张底牌!)需要定义三个人和一个底牌 集合接收牌。
        List<Integer> p1 = new ArrayList<>();
        List<Integer> p2 = new ArrayList<>();
        List<Integer> p3 = new ArrayList<>();
        //bottom设为底牌
        List<Integer> bottom = new ArrayList<>();
        //具体发送 牌
        for (int i=0;i<list.size();i++){
            //i=0,1,2,就是底牌了
            if (i<3){
            bottom.add(list.get(i));
            }else  if (i%3==0){
                p1.add(list.get(i));
            }else  if (i%3==1){
                p2.add(list.get(i));
            }else             {
                p3.add(list.get(i));

            }

        }
        //看一下发到手里的牌的信息
        Collections.sort(p1);
        Collections.sort(p2);
        Collections.sort(p3);
        Collections.sort(bottom);

        show("老王",p1,map);
        show("老李",p2,map);
        show("老张",p3,map);
        show("底牌",bottom,map);


    }

    private static void show(String name, List<Integer> list, Map<Integer, String> map) {
        System.out.println(name+": ");
        for (int i=0;i<list.size();i++){
            map.get(list.get(i));
        }
        for (Integer in:list){
            System.out.println(map.get(in)+" ");
        }
        System.out.println();
    }
}

运行结果:
打印时记得换行
system.out.println
这样会美观一点
“system.out.print”
斗地主 (3人斗地主) 通过程序将发牌过程实现,用到 Map 和 List集合_第1张图片

你可能感兴趣的:(map,list)