设计思路(实现原理)
- 创建两个String类型数组,其中一个用于存储牌的花色,一个用于存储牌的数字
- 创建一个ArrayList集合作为牌盒,将大小王和不同花色不同数字的牌循环添加到集合中
- 用Collections工具类的shuffle()方法洗牌
- 创建三个ArrayList集合作为三个人的牌的集合,并循环发牌,要留三张底牌
- 打印出三个人的牌和集合中留的三张底牌
代码分析
1. 创建存取四种花色和牌数字的两个数组
// 表示花色的数组
String[] colors = { "黑桃", "红桃", "梅花", "方块" };
// 表示点数的数组
String[] numbers = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K" };
2.创建一个ArrayList集合作为牌盒,将大小王和不同花色不同数字的牌循环添加到集合中
// 找一个牌盒
ArrayList<String> array = new ArrayList<String>();
array.add("大王");//添加大小王
array.add("小王");
// 循环装牌,外层循环四种花色,内层数字牌(这也是大小王先添加的原因)。组成一副扑克
for (String c : colors) {
for (String n : numbers) {
array.add(c.concat(n));
}
}
3.用Collections工具类的shuffle()方法洗牌
// 洗牌,对List集合中的元素进行随机排序
Collections.shuffle(array);
4.创建三个ArrayList集合作为三个人的牌的集合,并循环发牌,要留三张底牌
// 发牌
ArrayList<String> linString = new ArrayList<String>();
ArrayList<String> zhouString = new ArrayList<String>();
ArrayList<String> meString = new ArrayList<String>();
// 用普通for循环发牌
for (int x = 0; x < array.size() - 3; x++) {
if (x % 3 == 0) {//0表示要给linString发牌
linString.add(array.get(x));
} else if (x % 3 == 1) {//1表示要给zhouString发牌
zhouString.add(array.get(x));
} else if (x % 3 == 2) {//2表示要给meString发牌
meString.add(array.get(x));
}
}
// 看牌
System.out.println("linString:" + linString);
System.out.println("zhouString:" + zhouString);
System.out.println("meString:" + meString);
注意:为什么要留3张这个玩斗地主都应该知道吧,我就不多说了哦。
5.打印出三个人的牌和集合中留的三张底牌(底牌)
// 看底牌
System.out.print("三张底牌:");
for (int x = array.size() - 3; x < array.size(); x++) {
System.out.print(array.get(x) + " ");
}
完整代码
import java.util.*;
public class Example18 {
public static void main(String[] args) {
// 表示花色的数组
String[] colors = { "黑桃", "红桃", "梅花", "方块" };
// 表示点数的数组
String[] numbers = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K" };
// 找一个牌盒
ArrayList<String> array = new ArrayList<String>();
array.add("大王");
array.add("小王");
// 循环装牌
for (String c : colors) {
for (String n : numbers) {
array.add(c.concat(n));
}
}
// 洗牌
Collections.shuffle(array);
// 发牌
ArrayList<String> linString = new ArrayList<String>();
ArrayList<String> zhouString = new ArrayList<String>();
ArrayList<String> meString = new ArrayList<String>();
// 用普通for
for (int x = 0; x < array.size() - 3; x++) {
if (x % 3 == 0) {
linString.add(array.get(x));
} else if (x % 3 == 1) {
zhouString.add(array.get(x));
} else if (x % 3 == 2) {
meString.add(array.get(x));
}
}
// 看牌
System.out.println("linString:" + linString);
System.out.println("zhouString:" + zhouString);
System.out.println("meString:" + meString);
// 看底牌
System.out.print("三张底牌:");
for (int x = array.size() - 3; x < array.size(); x++) {
System.out.print(array.get(x) + " ");
}
}
}
运行结果
随机的随机的,仅供参考
总结
我认为这是一个比较有意思的案例,大家可以自己写一个打大A的案例来吸收知识点。多了解怎样用Collections类对集合进行操作。有哪些方法。。。自己查文档去吧。