如何使用Collections方法等去模拟斗地主的发牌洗牌和看牌操作。
思路:
创建一个动态数组当牌盒,创建花色数组和点数数组并将他们拼接放入牌盒。调用Collections工具类的shuffle方法对牌盒进行洗牌。创建三个玩家动态数组和一个底牌动态数组。遍历将牌盒里的牌发给玩家并且牌盒里的其中三张牌作为底牌,最后遍历所有玩家的牌和底牌。
1.首先创建一个牌盒,后续用于存储扑克牌。
//创建牌盒
List<String> cardBox = new ArrayList<String>();
2.创建两个数组,方便后续进行拼接进入牌盒。
//创建花色数组和点数数组
String[] colors = {"红桃","梅花","红心","方块"};
String[] numbers = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
3.接着使用增强for将两个数组进行拼接进入牌盒。(不要忘记大小王)
//遍历将花色数组和
for(String color : colors)
{
for(String number : numbers)
{
cardBox.add(color + number);
}
}
cardBox.add("小王");
cardBox.add("大王");
4.创建三个玩家动态数组和底牌动态数组
//创建三个玩家list
ArrayList<String> aArray = new ArrayList<>();
ArrayList<String> bArray = new ArrayList<>();
ArrayList<String> cArray = new ArrayList<>();
//创建一个底牌list
ArrayList<String> dpArray = new ArrayList<>();
5.接着调用Collections的shuffle方法进行洗牌操作
//调用Collections的shuffle的方法执行洗牌操作
Collections.shuffle(cardBox);
6.(重点)遍历将牌发给玩家,并取出三张牌放入底牌list。
//遍历将牌一张一张发给三个玩家
for (int i = 0; i < cardBox.size(); i++) {
String poker = cardBox.get(i); //此处将一张牌放入底牌
if (i >= cardBox.size() - 3) { //如果i已经到了最后三张,则将牌加进底牌list中
dpArray.add(poker);
} else if (i % 3 == 0) { //3为玩家数量
aArray.add(poker);
} else if (i % 3 == 1) {
bArray.add(poker);
} else if (i % 3 == 2) {
cArray.add(poker);
}
}
7.最后遍历所有玩家自己的牌以及三张底牌。
//遍历每个玩家自己的所有牌
System.out.println("----玩家1牌----");
Collections.sort(aArray);
for (String i : aArray) {
System.out.print(" " + i);
}
Collections.sort(bArray);
System.out.println("\n----玩家2牌----");
for (String i : bArray) {
System.out.print(" " + i);
}
Collections.sort(cArray);
System.out.println("\n----玩家3牌----");
for (String i : cArray) {
System.out.print(" " + i);
}
//遍历所有底牌
Collections.sort(dpArray);
System.out.println("\n----底牌----");
for (String i : dpArray) {
System.out.print(" " + i);
}