import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* @author yf
*
* 2020-12-04 09:23:41
*/
public class SendPockerTest {
public static void main(String[] args) {
// 1.买牌
// 1.1 定义一个双列集合,键:表示牌的编号 值:表示具体的牌 规则:编号越小,牌越小
Map<Integer, String> pockers = new HashMap<Integer, String>();
// 1.2 定义一个单列集合 用来存储所有牌的编号
List<Integer> list = new ArrayList<>();
// 1.3 具体买牌动作
// 普通牌,52
String[] colors = { "♠", "❤", "♣", "♦" };
String[] numbers = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2" };
int num = 0; // 表示牌的编号
// 通过循环嵌套,造普通牌
for (String number : numbers) { // 外循环 获取所有点数
for (String color : colors) {// 内循环 获取所有花色
String pocker = color + number;
// 将牌的编号 具体的牌放到双列集合中
pockers.put(num, pocker);
// 将牌的编号放到单列集合中
list.add(num);
// 没添加一张牌 编号要自增1
num++;
}
}
// 大小王
// 添加小王
pockers.put(num, "小王");
list.add(num++);
// 添加大王
pockers.put(num, "大王");
list.add(num++);
// 打印牌
System.out.println("所有的牌:" + pockers);
System.out.println("所有的编号" + list);
}
}
// 2.洗牌
Collections.shuffle(list);
System.out.println("洗好牌后,编号为" + list);
// 3.发牌
// 3.1 定义4个集合,分别表示3个玩家,底牌
List<Integer> liuyifei = new ArrayList<>();
List<Integer> zhaoliying = new ArrayList<>();
List<Integer> yanfen = new ArrayList<>();
List<Integer> dipai = new ArrayList<>();
// 3.2 具体的发牌动作 将索引和3取模 绝对发给谁
for (int i = 0; i < list.size(); i++) {
// 获取编号
Integer pockerNum = list.get(i);
System.out.println(pockerNum);
if (i >= list.size() - 3) {
// 底牌
dipai.add(pockerNum);
} else if (i % 3 == 0) {
liuyifei.add(pockerNum);
} else if (i % 3 == 1) {
zhaoliying.add(pockerNum);
} else if (i % 3 == 2) {
yanfen.add(pockerNum);
}
}
// 3.3 查看玩家,底牌的编号
System.out.println("liuyifei" + liuyifei);
System.out.println("zhaoliying" + zhaoliying);
System.out.println("yanfen" + yanfen);
public class SendPockerTest {
public static void main(String[] args) {
// 1.买牌
// 1.1 定义一个双列集合,键:表示牌的编号 值:表示具体的牌 规则:编号越小,牌越小
Map<Integer, String> pockers = new HashMap<Integer, String>();
// 1.2 定义一个单列集合 用来存储所有牌的编号
List<Integer> list = new ArrayList<>();
// 1.3 具体买牌动作
// 普通牌,52
String[] colors = { "♠", "❤", "♣", "♦" };
String[] numbers = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2" };
int num = 0; // 表示牌的编号
// 通过循环嵌套,造普通牌
for (String number : numbers) { // 外循环 获取所有点数
for (String color : colors) {// 内循环 获取所有花色
String pocker = color + number;
// 将牌的编号 具体的牌放到双列集合中
pockers.put(num, pocker);
// 将牌的编号放到单列集合中
list.add(num);
// 没添加一张牌 编号要自增1
num++;
}
}
// 大小王
// 添加小王
pockers.put(num, "小王");
list.add(num++);
// 添加大王
pockers.put(num, "大王");
list.add(num++);
// 打印牌
System.out.println("所有的牌:" + pockers);
System.out.println("所有的编号" + list);
// 2.洗牌
Collections.shuffle(list);
System.out.println("洗好牌后,编号为" + list);
// 3.发牌
// 3.1 定义4个集合,分别表示3个玩家,底牌
List<Integer> liuyifei = new ArrayList<>();
List<Integer> zhaoliying = new ArrayList<>();
List<Integer> yanfen = new ArrayList<>();
List<Integer> dipai = new ArrayList<>();
// 3.2 具体的发牌动作 将索引和3取模 绝对发给谁
for (int i = 0; i < list.size(); i++) {
// 获取编号
Integer pockerNum = list.get(i);
System.out.println(pockerNum);
if (i >= list.size() - 3) {
// 底牌
dipai.add(pockerNum);
} else if (i % 3 == 0) {
liuyifei.add(pockerNum);
} else if (i % 3 == 1) {
zhaoliying.add(pockerNum);
} else if (i % 3 == 2) {
yanfen.add(pockerNum);
}
}
/*
* // 3.3 查看玩家,底牌的编号 System.out.println("liuyifei:" + liuyifei);
* System.out.println("zhaoliying:" + zhaoliying); System.out.println("yanfen:"
* + yanfen);
*/
// 4.查看具体的牌
System.out.println("----------------------------");
String str = printPocker(liuyifei, pockers);
System.out.println("liuyifei:" + str);
System.out.println("zhaoliying:" + printPocker(zhaoliying, pockers));
System.out.println("yanfen:" + printPocker(yanfen, pockers));
}
/*
* 4. 定义一个方法用来看牌 方法名:printPocker 参数列表:List<Integer>,Map<Integer,String>
* 返回值:String
*/
public static String printPocker(List<Integer> nums, Map<Integer, String> pockers) {
// 1.对牌的编号进行升序排列
Collections.sort(nums);
// 2.遍历牌的编号集合,获取到每一个编号
StringBuilder sb = new StringBuilder();
for (Integer num : nums) {
// num就是要查找的具体牌的编号
// 3.根据编号去双列集合中查找该编号对应的具体牌
String pocker = pockers.get(num);
// 4.将获取到的牌进行拼接
sb.append(pocker + " ");
}
// 5. 将最后拼接结果返回即可
String str = sb.toString();
return str.trim();
}
}