斗地主小游戏之洗牌发牌

代码

public class PokerShuffleCards {
	public static void main(String[] args) {
		// 准备花色
		ArrayList<String> color = new ArrayList<String>();
		color.add("♠");
		color.add("♥");
		color.add("♦");
		color.add("♣");
		// 准备数字,用arrayList将纸牌由小到大排序
		ArrayList<String> number = new ArrayList<String>();
		for (int i = 3; i <= 10; i++) {
			number.add(i + "");
		}
		number.add("J");
		number.add("Q");
		number.add("K");
		number.add("A");
		number.add("2");
		// 定义一个map集合:用来将数字与纸牌进行对应
		HashMap<Integer, String> map = new HashMap<Integer, String>();
		int index = 0; // 纸牌编号
		for (String thisNumber : number) {
			for (String thisColor : color) {
				// 将花色与数字组合
				map.put(index++, thisColor + thisNumber);
			}
		}
		// 加入大小王
		map.put(index++, "小☺");
		map.put(index++, "大☺");
		// 创建内容为0-53的数字集合代表54张牌
		ArrayList<Integer> cards = new ArrayList<Integer>();
		for (int i = 0; i < 54; i++) {
			cards.add(i);
		}
		// 洗牌,使用Collections工具类中胡shuffle()方法
		Collections.shuffle(cards);
		// 创建三个玩家和底牌
		ArrayList<Integer> iPlayer0 = new ArrayList<Integer>();
		ArrayList<Integer> iPlayer1 = new ArrayList<Integer>();
		ArrayList<Integer> iPlayer2 = new ArrayList<Integer>();
		ArrayList<Integer> iSecretCards = new ArrayList<Integer>();
		// 发牌
		for (int i = 0; i < cards.size(); i++) {
			if (i >= 51) {
				iSecretCards.add(cards.get(i)); // 留取3张底牌
			} else {
				if (i % 3 == 0) { // 与3取余为0发给玩家0
					iPlayer0.add(cards.get(i));
				} else if (i % 3 == 1) { // 与3取余为1发给玩家1
					iPlayer1.add(cards.get(i));
				} else {// 与3取余为2发给玩家2
					iPlayer2.add(cards.get(i));
				}
			}
		}
		// 使用Collections的sort方法,对每个人手中的牌进行排序
		Collections.sort(iPlayer0);
		Collections.sort(iPlayer1);
		Collections.sort(iPlayer2);
		// 对应数字形式的每个人手中的牌,定义字符串形式的牌
		ArrayList<String> sPlayer0 = new ArrayList<String>();
		ArrayList<String> sPlayer1 = new ArrayList<String>();
		ArrayList<String> sPlayer2 = new ArrayList<String>();
		ArrayList<String> sSecretCards = new ArrayList<String>();

		// 循环主键,从map中获取纸牌
		for (Integer key : iPlayer0) {
			sPlayer0.add(map.get(key));
		}
		for (Integer key : iPlayer1) {
			sPlayer1.add(map.get(key));
		}
		for (Integer key : iPlayer2) {
			sPlayer2.add(map.get(key));
		}
		for (Integer key : iSecretCards) {
			sSecretCards.add(map.get(key));
		}

		// 看牌
		System.out.println("玩家1:" + sPlayer0);
		System.out.println("玩家2:" + sPlayer1);
		System.out.println("玩家3:" + sPlayer2);
		System.out.println("底牌:" + sSecretCards);
	}
}

结果
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无知的小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值