需求分析:
1.准备牌,准备一组牌,四组花色,每组花色公有13张牌,外加大小王
2.洗牌,将准备好的牌组随机打乱
3.发牌,给每个人平均分发17张牌,最后三张牌存放到底牌之中
4.看牌,直接输出打印
代码实现:
package cn.itcast.demo10;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
/*
1.准备牌
2.洗牌
3.发牌
4.看牌
*/
public class DouDIZhu {
public static void main(String[] args) {
//1.准备牌
//准备一个存储54张牌的ArrayList集合
ArrayList<String> poker = new ArrayList<>();
//定义两个数组,一个存储花色,一个存储数字
String[] colors = {"♥", "♦", "♠", "♣"};
String[] numbers = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};
//把大小王存储到集合之中
poker.add("大王");
poker.add("小王");
//循环嵌套组装这两个数组,组装52张牌
for (String number : numbers) {
for (String color : colors) {
//System.out.println(color+number);
//将组装好的牌放入集合中
poker.add(color + number);
}
}
// System.out.println(poker);
/*2.洗牌
使用集合的工具类Collections中的方法
static void shuffle(List<?> list, Random rnd)使用指定的随机源对指定列表进行置换 。
*/
Collections.shuffle(poker);
//System.out.println(poker);
/*
3.发牌
定义4个集合来存储3个玩家和一份底牌
*/
ArrayList<String> play1 = new ArrayList<>();
ArrayList<String> play2 = new ArrayList<>();
ArrayList<String> play3 = new ArrayList<>();
ArrayList<String> dipai = new ArrayList<>();
/*
遍历集合poker
使用集合的索引%3给三个玩家发牌
注意:
先判断底牌是否i<51),否则没牌给底牌发了
当(i>=51)时,给底牌发三张
注意:集合是从0开始遍历所以时小于51
*/
for (int i = 0; i < poker.size(); i++) {
String s = poker.get(i);
if (i >= 51) {
//给底牌发牌
dipai.add(s);
} else if (i % 3 == 0) {
play1.add(s);
} else if (i % 3 == 1) {
play2.add(s);
} else if (i % 3 == 2) {
play3.add(s);
}
}
/*
4.看牌
直接输出打印
*/
System.out.println("玩家1的牌时:" + play1);
System.out.println("玩家2的牌是:" + play2);
System.out.println("玩家3的牌是:" + play3);
System.out.println("底牌:" + dipai);
}
}