java 用集合实现扑克牌的洗牌和发牌

1随机发扑克,但没对玩家的扑克整理,代码如下:

//实现随机发牌,按斗地主的模式,实现步骤,创建List集合对象将54张扑克放入集合中,用集合工具类的shuffle方法,将List打乱
//将List集合的元素放入四份,三个玩家,一份底牌
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Poker {
	public static void main(String[] args) {
		String[] nums = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
		String[] colors = { "黑桃", "红桃", "梅花", "方片" };
		//创建List对象,将54张牌放入到List对象中
		ArrayList<String> pokerList = new ArrayList<>();
		for (String num : nums) {
			for (String color : colors) {
				pokerList.add(color + num);
			}
		}
		pokerList.add("大鬼");
		pokerList.add("小鬼");
		//洗牌,将List集合的元素打乱顺序
		Collections.shuffle(pokerList);
		System.out.println(pokerList);
		List<String> buttoms = new ArrayList<>();
		List<String> player1 = new ArrayList<>();
		List<String> player2 = new ArrayList<>();
		List<String> player3 = new ArrayList<>();

		for (int i = 0; i < pokerList.size(); i++) {
			if (i >= pokerList.size() - 3) {
				buttoms.add(pokerList.get(i));
			} else if (i % 3 == 0) {
				player1.add(pokerList.get(i));
			} else if (i % 3 == 1) {
				player2.add(pokerList.get(i));
			} else {
				player3.add(pokerList.get(i));
			}
		}
		System.out.println(buttoms);
		System.out.println(player1);
		System.out.println(player2);
		System.out.println(player3);
	}
}
out:
[红桃2, 梅花3, 黑桃2, 黑桃5, 方片7, 方片10, 梅花A, 梅花2, 黑桃Q, 小鬼, 方片A, 梅花J, 红桃10, 方片8, 红桃3, 红桃8, 梅花Q, 梅花K, 红桃A, 黑桃9, 红桃5, 黑桃4, 方片Q, 方片9, 方片4, 红桃Q, 梅花5, 梅花10, 红桃4, 黑桃J, 红桃7, 梅花4, 方片K, 红桃K, 方片5, 黑桃10, 黑桃6, 黑桃A, 红桃9, 梅花8, 方片6, 黑桃3, 梅花6, 方片3, 方片J, 方片2, 黑桃K, 梅花7, 红桃J, 大鬼, 红桃6, 黑桃7, 黑桃8, 梅花9]
[黑桃7, 黑桃8, 梅花9]
[红桃2, 黑桃5, 梅花A, 小鬼, 红桃10, 红桃8, 红桃A, 黑桃4, 方片4, 梅花10, 红桃7, 红桃K, 黑桃6, 梅花8, 梅花6, 方片2, 红桃J]
[梅花3, 方片7, 梅花2, 方片A, 方片8, 梅花Q, 黑桃9, 方片Q, 红桃Q, 红桃4, 梅花4, 方片5, 黑桃A, 方片6, 方片3, 黑桃K, 大鬼]
[黑桃2, 方片10, 黑桃Q, 梅花J, 红桃3, 梅花K, 红桃5, 方片9, 梅花5, 黑桃J, 方片K, 黑桃10, 红桃9, 黑桃3, 方片J, 梅花7, 红桃6]

2随机发扑克,并对玩家手中的扑克进行整理,代码如下:

package exercise;

//初始化一副扑克的,创建集合对象将扑克放进去,要注意扑克与索引的对应,应该是先4张A,再4张2,......
//使用Collections的shuffle方法对集合进行洗牌
//  实现发牌,发三家牌
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.TreeSet;

public class Poker02 {
	public static void main(String[] args) {
		String[] nums = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
		String[] colors = { "黑桃", "红桃", "梅花", "方片" };
		HashMap<Integer, String> pokerMap = new HashMap<>();// 用来存放key索引value和牌
		List<Integer> indexList = new ArrayList<>();// 存储扑克的索引0-53
		TreeSet<Integer> buttoms = new TreeSet<>();
		TreeSet<Integer> player1 = new TreeSet<>();
		TreeSet<Integer> player2 = new TreeSet<>();
		TreeSet<Integer> player3 = new TreeSet<>();
		// 定义索引值变量
		int index = 0;
		// 将扑克牌与索引建立对应关系放入map和list中
		for (String num : nums) {
			for (String color : colors) {
				pokerMap.put(index, color + num);
				indexList.add(index);
				index++;
			}
		}
		pokerMap.put(index, "小鬼");
		indexList.add(index++);
		pokerMap.put(index, "大鬼");
		indexList.add(index);
		// 洗牌
		Collections.shuffle(indexList);
		// 发牌
		for (int i = 0; i < indexList.size(); i++) {
			if (i >= indexList.size() - 3) {
				buttoms.add(indexList.get(i));
			} else if (i % 3 == 0) {
				player1.add(indexList.get(i));
			} else if (i % 3 == 1) {
				player2.add(indexList.get(i));
			} else {
				player3.add(indexList.get(i));
			}
		}

		check(pokerMap, player1, "player1");
		check(pokerMap, player2, "player2");
		check(pokerMap, player3, "player3");
		check(pokerMap, buttoms, "buttoms");
	}

	public static void check(HashMap<Integer, String> pokerMap, TreeSet<Integer> player1, String name) {
		// 查看手中的牌
		System.out.println(name + " :");
		for (Integer i : player1) {
			System.out.print(pokerMap.get(i) + " ");
		}
		System.out.println();
	}

}
out:
player1 :
梅花A 梅花2 红桃3 黑桃4 梅花5 方片5 梅花6 红桃7 黑桃8 方片8 黑桃9 梅花9 黑桃J 梅花J 红桃K 小鬼 大鬼 
player2 :
方片A 黑桃2 方片2 梅花3 方片3 方片4 黑桃5 红桃5 方片6 方片7 红桃8 梅花8 方片9 黑桃10 红桃10 黑桃Q 方片Q 
player3 :
红桃A 红桃2 黑桃3 红桃4 梅花4 红桃6 黑桃7 红桃9 梅花10 方片10 红桃J 方片J 红桃Q 梅花Q 黑桃K 梅花K 方片K 
buttoms :
黑桃A 黑桃6 梅花7 

原文:

http://www.monkey1024.com/javase/592

猜你喜欢

转载自blog.csdn.net/sinat_41132860/article/details/84307693