斗地主随机发牌案例

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 box = new ArrayList();// 创建牌盒子
		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));
		}
	}
}

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

还有如何分配牌

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

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

你可能感兴趣的:(Java基础)