目录
一、升级综合案列需求分析
1.1 准备牌
1.2 洗牌
1.3 发牌
1.4 看牌
二、代码实现
2.1 准备牌
2.2 洗牌
2.3 发牌
2.4 看牌-完整代码实现
2.5 实现效果
package DemoDdz;
import java.util.ArrayList;
public class Upgrade {
public static void main(String[] args) {
// 1、准备牌
// 定义一个存储108张牌的ArrayList集合,泛型使用String
ArrayList poker = new ArrayList<>();
// 定义两个数组,一个数组存储牌的花色,一个数组存储牌的序号
String[] colors = {"♥", "♠", "♣", "♦","♥", "♠", "♣", "♦"};
String[] numbers = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};
// 把两副牌的大小王都存储到poker集合中
poker.add("♚大王");
poker.add("♔小王");
poker.add("♚大王");
poker.add("♔小王");
// 循环嵌套遍历两个素组,组装108张牌
for (String number : numbers) {
for (String color : colors) {
// 把组装好的牌存储到poker集合中
poker.add(color + number);
}
}
}
}
Collections.shuffle(poker);
package DemoDdz;
import java.util.ArrayList;
import java.util.Collections;
public class Upgrade {
public static void main(String[] args) {
// 1、准备牌
// 定义一个存储108张牌的ArrayList集合,泛型使用String
ArrayList poker = new ArrayList<>();
// 定义两个数组,一个数组存储牌的花色,一个数组存储牌的序号
String[] colors = {"♥", "♠", "♣", "♦", "♥", "♠", "♣", "♦"};
String[] numbers = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};
// 把两副牌的大小王都存储到poker集合中
poker.add("♚大王");
poker.add("♔小王");
poker.add("♚大王");
poker.add("♔小王");
// 循环嵌套遍历两个素组,组装108张牌
for (String number : numbers) {
for (String color : colors) {
// 把组装好的牌存储到poker集合中
poker.add(color + number);
}
}
/*
2、洗牌
使用集合工具类Collections中的方法
static void shuffle(list> list) 使用默认随机源对指定列表进行置换;
*/
Collections.shuffle(poker);
/*
3、发牌
定义5个集合,存储玩家的牌和底牌
*/
ArrayList playe01 = new ArrayList<>();
ArrayList playe02 = new ArrayList<>();
ArrayList playe03 = new ArrayList<>();
ArrayList playe04 = new ArrayList<>();
ArrayList card = new ArrayList<>();
/*
循环遍历poker集合,获取每一张牌
使用poker集合的索引%4给4个玩家轮流发牌
剩余八张牌给底牌,需要先判断(i>=100)
*/
for (int i = 0; i < poker.size(); i++) {
// 获取每一张牌
String p = poker.get(i);
// 轮流发牌
if (i >= 100) {
// 给底牌发牌
card.add(p);
} else if (i % 4 == 0) {
playe01.add(p);
} else if (i % 4 == 1) {
playe02.add(p);
} else if (i % 4 == 2) {
playe03.add(p);
} else if (i % 4 == 3) {
playe04.add(p);
}
}
}
}
package DemoDdz;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
public class Upgrade {
public static void main(String[] args) {
// 1、准备牌
// 定义一个存储108张牌的ArrayList集合,泛型使用String
ArrayList poker = new ArrayList<>();
// 定义两个数组,一个数组存储牌的花色,一个数组存储牌的序号
String[] colors = {"♥", "♠", "♣", "♦", "♥", "♠", "♣", "♦"};
String[] numbers = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};
// 把两副牌的大小王都存储到poker集合中
poker.add("♚大王");
poker.add("♔小王");
poker.add("♚大王");
poker.add("♔小王");
// 循环嵌套遍历两个素组,组装108张牌
for (String number : numbers) {
for (String color : colors) {
// 把组装好的牌存储到poker集合中
poker.add(color + number);
}
}
/*
2、洗牌
使用集合工具类Collections中的方法
static void shuffle(list> list) 使用默认随机源对指定列表进行置换;
*/
Collections.shuffle(poker);
/*
3、发牌
定义5个集合,存储玩家的牌和底牌
*/
ArrayList playe01 = new ArrayList<>();
ArrayList playe02 = new ArrayList<>();
ArrayList playe03 = new ArrayList<>();
ArrayList playe04 = new ArrayList<>();
ArrayList card = new ArrayList<>();
/*
循环遍历poker集合,获取每一张牌
使用poker集合的索引%4给4个玩家轮流发牌
剩余八张牌给底牌,需要先判断(i>=100)
*/
for (int i = 0; i < poker.size(); i++) {
// 获取每一张牌
String p = poker.get(i);
// 轮流发牌
if (i >= 100) {
// 给底牌发牌
card.add(p);
} else if (i % 4 == 0) {
playe01.add(p);
} else if (i % 4 == 1) {
playe02.add(p);
} else if (i % 4 == 2) {
playe03.add(p);
} else if (i % 4 == 3) {
playe04.add(p);
}
}
// 4、看牌
// 直接打印输出
System.out.println("星爷:" + playe01);
System.out.println("发哥:" + playe02);
System.out.println("华仔:" + playe03);
System.out.println("赌神:" + playe04);
System.out.println("底牌:" + card);
// 遍历数组中的所有元素
Iterator it = poker.iterator();
while (it.hasNext()) {
String s = it.next();
System.out.println(s);
}
}
}