今天学了集合的一个小案例,就是斗地主小游戏的发牌代码,感觉很有兴趣,但是发出的牌是无序的,求指教有顺序的代码怎么写。下面是无序的代码import java.util.ArrayList;
import java.util.Collections;
/*
* 需求:模拟斗地主发牌。
* 思路:
* A:买牌
* 黑桃A,黑桃2,黑桃3,...黑桃9,黑桃10,黑桃J,黑桃Q,黑桃K
* 红桃...
* 梅花...
* 方块...
* 大王,小王
* B:洗牌
* 随机置换
* C:发牌
* 发给三个人
* D:看底牌
* 留三张
*/
public class CollectionsTest {
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));
}
}
// 显示所有牌
// System.out.println(array);
// 洗牌
Collections.shuffle(array);
// 显示所有牌
// System.out.println(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);
// 看底牌
for (int x = array.size() - 3; x < array.size(); x++) {
System.out.print("底牌是:"+array.get(x) + " ");
}
}
}
/*运行结果是:
linString:[红桃8, 梅花3, 黑桃J, 方块3, 方块6, 方块10, 黑桃10, 方块4, 小王, 方块Q, 梅花Q, 梅花5, 方块J, 红桃A, 黑桃Q, 大王, 梅花K]
zhouString:[红桃10, 红桃9, 黑桃9, 黑桃K, 黑桃3, 梅花10, 方块2, 方块5, 黑桃7, 梅花J, 方块A, 方块8, 红桃J, 黑桃4, 红桃7, 梅花A, 方块9]
meString:[梅花7, 梅花2, 黑桃A, 梅花6, 梅花8, 方块7, 黑桃6, 红桃K, 红桃5, 红桃Q, 黑桃5, 红桃6, 红桃4, 黑桃8, 梅花4, 黑桃2, 梅花9]
底牌是:红桃3 底牌是:红桃2 底牌是:方块K
*/
|
|