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));
}
}
}
感觉主要的难点在于如何把花色组合
还有如何分配牌
把业务需求代码化,考验一个程序员对于该语言的熟练程度以及逻辑思维能力
对于新手来说,更重要的是熟悉代码,逻辑业务能力在日后的案例中回慢慢熟悉,要打好基础