设计思路(实现原理)
- 创建两个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类对集合进行操作。有哪些方法。。。自己查文档去吧。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/114676.html