斗地主洗牌发牌案例

1. 模拟斗地主洗牌和发牌并对牌进行排序
案例分析:
 1.创建Map集合存储牌,并且大的键对应大的牌,小的键对应小的牌
  2.洗牌,洗的是索引(map集合中每张牌对应的键)
  3.发牌,发的索引,并且岁这个索引进行排序
  4.看牌,根据发到的键去map集合中找出对应的牌




public class ChinesePoker {
	public static <V, K> void main(String[] args) {
		//模拟斗地主洗牌和发牌并对牌进行排序
		//四花色:黑桃 红桃 梅花 方块 1—10-JQK ,大王小王
		//创建集合ArrayList、HashMap
		//创建花色、点数数组
		String[] colors = {"黑桃","红桃","梅花","方块"};
		String[] numbers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
		ArrayList<Integer> al = new ArrayList<Integer>();
		//创建HashMap给每一张牌编号,且把编号赋给ArrayList
		HashMap<Integer, String> hm = new HashMap<Integer, String>();
		int i = 0 ;
		for (String number: numbers) {
			for (String color : colors) {
				String poker = color.concat(number);
				hm.put(i,poker);
				al.add(i);
				i++;
			}
		}
		hm.put(i, "小王");
		al.add(i);
		i++;
		hm.put(i, "大王");
		al.add(i);
		i++;
		//洗牌ArrayList乱序
		Collections.shuffle(al);
		//TreeSet接
		TreeSet<Integer> A = new TreeSet<>();
		TreeSet<Integer> B = new TreeSet<>();
		TreeSet<Integer> C = new TreeSet<>();
		TreeSet<Integer> D = new TreeSet<>();
		for (int j = 0; j < al.size(); j++) {
            if (j >= al.size() - 3) {  
                D.add(al.get(j));  
            } else if (j % 3 == 0) {  
                A.add(al.get(j));  
            } else if (j % 3 == 1) {  
                B.add(al.get(j));  
            } else if (j % 3 == 2) {  
                C.add(al.get(j));  
            }  
			
		}
		lookPoker("A",A,hm);
		lookPoker("B", B, hm);
		lookPoker("C", C, hm);
		lookPoker("底牌", D, hm);
	}

	private static void lookPoker(String string, TreeSet<Integer> a,
			HashMap<Integer, String> hm) {
		// TODO Auto-generated method stub
		System.out.print(string+":");
		for (Integer integer : a) {
			System.out.print(hm.get(integer)+" ");
		}
		System.out.println();
	}
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值