斗地主随机发牌案例

package com.it_03;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
//模拟斗地主发牌
/* * 做一副牌 * 洗牌 * 发牌 * */
public class CollectionsTest {
	public static void main(String[] args) {
		/* 做牌阶段 */
		String[] col = { "红桃", "黑桃", "方块", "梅花" };// 创建花色、数字两个数组
		String[] num = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
		ArrayList<String> box = new ArrayList<String>();// 创建牌盒子
		for (int i = 0; i < col.length; i++) {
			for (int j = 0; j < num.length; j++) {
				box.add(col[i] + num[j]);// 创建组合花色+数字,并遍历出来→→→// 把组合好的牌放进盒子里
			}
		}
		box.add("大王");
		box.add("小王");
		/* 洗牌阶段 */
		Collections.shuffle(box);// shuffle进行随机
		System.out.println(box);// 遍历随机牌组
		/* 发牌阶段 */
		// 创建三个玩家,本质上是三个对象,每个对象装了17张牌,所以要创建数组表单
		ArrayList 王力宏 = new ArrayList();
		ArrayList 罗志祥 = new ArrayList();
		ArrayList 潘玮柏 = new ArrayList();
		// 利用%3=1,2,3进行分配牌数,留三张底牌
		for (int i = 0; i < box.size() - 3; i++) {
			if (i % 3 == 0) {
				王力宏.add(box.get(i));
			} else if (i % 3 == 1) {
				罗志祥.add(box.get(i));
			} else if (i % 3 == 2) {
				潘玮柏.add(box.get(i));
			}
		}
		System.out.println("王力宏的牌:" + 王力宏);
		System.out.println("罗志祥的牌:" + 罗志祥);
		System.out.println("潘玮柏的牌:" + 潘玮柏);
		// 做遍历三张底牌的循环
		System.out.println("底牌:");
		for (int i = box.size() - 3; i < box.size(); i++) {
			System.out.println(box.get(i));
		}
	}
}

感觉主要的难点在于如何把花色组合

还有如何分配牌

把业务需求代码化,考验一个程序员对于该语言的熟练程度以及逻辑思维能力

对于新手来说,更重要的是熟悉代码,逻辑业务能力在日后的案例中回慢慢熟悉,要打好基础

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值