斗地主案例(能顺序看牌)

package cn.itcast.Map;

import java.util.*;

//斗地主案例(能顺序看牌)
public class DouDiZhu {
public static void main(String[] args) {
//1 准备牌
//创建Map集合,存储牌的索引和组装好的牌
HashMap<Integer,String> poker=new HashMap<>();
//创建list集合,存放牌的索引
ArrayList pokerIndex=new ArrayList<>();
//定义两个集合存放花色和牌的序号
ArrayList colors=new ArrayList<>();
colors.add(“♥”);
colors.add(“♠”);
colors.add(“♣”);
colors.add(“♦”);
ArrayList numbers=new ArrayList<>();
numbers.add(“2”);
numbers.add(“A”);
numbers.add(“K”);
numbers.add(“Q”);
numbers.add(“J”);
numbers.add(“10”);
numbers.add(“9”);
numbers.add(“8”);
numbers.add(“7”);
numbers.add(“6”);
numbers.add(“5”);
numbers.add(“4”);
numbers.add(“3”);
//把大王和小王存到poker中
//定义一个牌的索引
int index=0;
poker.put(index,“大王”);
pokerIndex.add(index);
index++;
poker.put(index,“小王”);
pokerIndex.add(index);
index++;

    //组装牌
    for (String number : numbers) {
        for (String color : colors) {
                poker.put(index,color+number);
                pokerIndex.add(index);
                index++;
        }
    }

    //2 洗牌
    Collections.shuffle(pokerIndex);

    //3 发牌
    //定义4个集合,存放底牌和三根玩家
    ArrayList<Integer> player01=new ArrayList<>();
    ArrayList<Integer> player02=new ArrayList<>();
    ArrayList<Integer> player03=new ArrayList<>();
    ArrayList<Integer> dipai=new ArrayList<>();

    for(int i=0;i<pokerIndex.size();i++){
        Integer n=pokerIndex.get(i);
        if(i>=51)
            dipai.add(i);
        else if(i%3==0)
            player01.add(i);
        else if(i%3==1)
            player02.add(i);
        else if(i%3==2)
            player03.add(i);
    }

    // 4 排序
    Collections.sort(player01);
    Collections.sort(player02);
    Collections.sort(player03);
    Collections.sort(dipai);

    //看牌
    lookPoker("刘德华",poker,player01);
    lookPoker("周星驰",poker,player02);
    lookPoker("周润发",poker,player03);
    lookPoker("底牌",poker,dipai);

}

/*定义一个看牌的函数
参数:玩家姓名
     存储牌的poker集合
     玩家或底牌的list集合
查表法:
     遍历玩家的牌,获取索引
     使用索引去map集合查找value值*/
public static void lookPoker(String name,HashMap<Integer,String> poker,ArrayList<Integer> player){
    System.out.print(name+":  ");
    for (Integer key : player) {
        System.out.print(poker.get(key)+" ");
    }
    System.out.println();
}

}

主要是对牌的索引排序,然后查找map集合

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值