JAVA小游戏—————模拟斗地主进行洗牌,发牌并进行排序

package com.heima.test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;

public class Test3 {

	public static void main(String[] args) {
		/*
		 * 模拟斗地主洗牌发牌,并对牌进行排序
		 */
		//先用两个数组存储牌值和花色
		String[] num= {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
		String[] color= {"红桃","黑桃","方片","梅花"};
		HashMap<Integer, String> hm=new HashMap<>();            //键存索引,值存牌
		ArrayList<Integer> list=new ArrayList<>();             //存储索引,因为洗牌就是洗索引,最后在根据索引找牌
		int index=0;
		
		//拼接扑克牌并将索引和扑克牌存储到HashMap集合中
		for(String s1:num) {
			for(String s2:color) {
				hm.put(index, s2.concat(s1));
				list.add(index);                 //将0-51索引添加到list中
				index++;
			}
		}
		hm.put(index, "小王");
		list.add(index);                       //将52索引添加到list中
		hm.put(index+1, "大王");
		list.add(index+1);                       //将53索引添加到list中
		System.out.println(list);
		
		//洗牌,就是洗索引,而索引存在list中
		Collections.shuffle(list);
		//发牌
		TreeSet<Integer> zhangsan=new TreeSet<>();
		TreeSet<Integer> lisi=new TreeSet<>();
		TreeSet<Integer> wangwu=new TreeSet<>();
		TreeSet<Integer> dipai=new TreeSet<>();
		for (int i = 0; i < list.size(); i++) {
			if(i>=list.size()-3) {                      //先拿出三张底牌
				dipai.add(list.get(i));                 //将底牌添加到dipai集合中 ,get(i)是根据索引获取值
			}else if(i%3==0) {                           //发牌,把余数是0的给张三
				zhangsan.add(list.get(i));				 
			}else if(i%3==1) {                           //把玉树是1的给李四
				lisi.add(list.get(i));
			}else {
				wangwu.add(list.get(i));                //剩下的给王五 
			}
		}
		LookPoker(hm, zhangsan,"张三");
		System.out.println();
		LookPoker(hm, lisi,"李四");
		System.out.println();
		LookPoker(hm, wangwu,"王五");
		System.out.println();
		LookPoker(hm, dipai,"底牌");
		}
	//看牌
	/*
	 * 返回值void
	 * 参数列表:HashMap,TreeSet,String name
	 */
	public static void LookPoker(HashMap<Integer, String> hm,TreeSet<Integer> ts,String name) {
		System.out.print(name+"的牌是:");
		for(Integer i:ts) {        //i代表双列集合中每一个键
			System.out.print(hm.get(i)+" ");    //根据键获取值
		}
	}
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值