java实例 之 斗地主

需求分析

  1. 准备牌:

完成数字与纸牌的映射关系:

使用双列Map(HashMap)集合,完成一个数字与字符串纸牌的对应关系(相当于一个字典)。

  1. 洗牌:

通过数字完成洗牌发牌

  1. 发牌:

将每个人以及底牌设计为ArrayList,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。

存放的过程中要求数字大小与斗地主规则的大小对应。

将代表不同纸牌的数字分配给不同的玩家与底牌。

  1. 看牌:

通过Map集合找到对应字符展示。

通过查询纸牌与数字的对应关系,由数字转成纸牌字符串再进行展示。

代码实现

package com.Map;

import java.util.*;

public class Doudizhu {
     
    public static void main(String[] args) {
     
        doudizhu();
    }
    private static void doudizhu() {
     
        String[] hua={
     "♠","♥","♦","♣"};
        String[] shu={
     "2","A","K","Q","J","10","9","8","7","6","5","4","3"};
        Map<Integer,String> map=new HashMap<>();
        int i=2;
        //循环的两个顺序不能颠倒,要把他们排列成2222AAAAKKKK这种。
        for(String s:shu){
     
            for(String h:hua){
     
                map.put(++i,h+s);
            }
        }
        map.put(1,"大王");
        map.put(2,"小王");
        //将牌打乱,先将牌的key取出到Set集合中,因为要用到Collections类中的shuffle()方法,所以必须要传给list。
        Set<Integer> set= map.keySet();
        List<Integer> list=new ArrayList<>();
        list.addAll(set);
        Collections.shuffle(list);

        ArrayList<Integer> P1 = new ArrayList<>();
        ArrayList<Integer> P2 = new ArrayList<>();
        ArrayList<Integer> P3 = new ArrayList<>();
        ArrayList<Integer> dipai = new ArrayList<>();
        for(int j=1;j<=list.size();j++){
     
            Integer no = list.get( j-1);
            if(j>51) dipai.add(no);
            else {
     
                if(j%3==0) P1.add(no);
                else if (j%3==1) P2.add(no);
                else if (j%3==2) P3.add(no);
            }
        }
        //排序
        Collections.sort(P1);
        Collections.sort(P2);
        Collections.sort(P3);
        Collections.sort(dipai);

        kanpai("fjc",map,P1);
        kanpai("ltf",map,P2);
        kanpai("lwh",map,P3);
        kanpai("dipai",map,dipai);
    }
    //看牌的方法
    private static void kanpai(String name,Map<Integer,String> poker,ArrayList<Integer> arr) {
     
        System.out.print(name+": ");
        for(Integer k:arr){
     
            String s1=poker.get(k);
            System.out.print(s1+"  ");
        }
        System.out.println();
    }
}

你可能感兴趣的:(java小实例)