用java集合模拟斗地主洗牌和随机发牌

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;
/**
 * 
 * @author Tracy Xiao
 *
 */
public class Main {

	public static void main(String[] args) {
		/**
		 * 创建牌花色数字数组
		 */
		String[] num = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
		String[] color = {"红桃","黑桃","方片","梅花"};
		String[] king = {"小王","大王"};
		/**
		 * 初始化保存牌序号及花色
		 */
		ArrayList<Integer> pokerIndex = new ArrayList<>();//牌序号
		HashMap<Integer, String> pokerMap = new HashMap<>();//牌序号和花色Map
		int index = 0;
		
		/**
		 * 创建玩家和底牌,用treeset排序,玩家集合中存放的排序号
		 */
		TreeSet<Integer> three = new TreeSet<>();//底牌
		TreeSet<Integer> player1 = new TreeSet<>();
		TreeSet<Integer> player2 = new TreeSet<>();
		TreeSet<Integer> player3 = new TreeSet<>();
		/**
		 * 将牌数组储存到map和list中
		 */
		for(String s1 : num) {
			for(String s2 : color) {
				pokerIndex.add(index);
				pokerMap.put(index++, s2.concat(s1));//字符串拼接
			}
		}
		/**
		 * 添加大小王
		 */
		pokerIndex.add(index);
		pokerMap.put(index++, king[0]);
		pokerIndex.add(index);
		pokerMap.put(index, king[1]);
		/**
		 * 洗牌
		 */
		Collections.shuffle(pokerIndex);
		/**
		 * 给玩家发牌
		 */
		for (int i = 0; i < pokerIndex.size(); i++) {
			if(i >= pokerIndex.size() - 3) {//最后3张为底牌
				three.add(pokerIndex.get(i));
			} else if(i % 3 == 0) {
				player1.add(pokerIndex.get(i));
			} else if(i % 3 == 1) {
				player2.add(pokerIndex.get(i));
			} else {
				player3.add(pokerIndex.get(i));
			}
		}
		/**
		 * 看牌
		 */
		seePoker("Three",three,pokerMap);
		seePoker("player1",player1,pokerMap);
		seePoker("player2",player2,pokerMap);
		seePoker("player2",player2,pokerMap);
	}
	/**
	 * 看牌
	 * @param ts
	 * @param hm
	 */
	private static void seePoker(String name,TreeSet<Integer> ts,HashMap<Integer, String> hm) {
		int index = 0;
		System.out.print(name+" : ");
		for(Integer i : ts) {
			System.out.print(hm.get(i));
			if(index++ < ts.size() - 1) {
				System.out.print(",");
			}
		}
		System.out.println();//换行
	}

}

猜你喜欢

转载自blog.csdn.net/pastthewind/article/details/80116039
今日推荐