斗地主综合案例有序版
package Day17;/*
*@author wanghongyuan
*@Create 2020/12/26 10:43
*/
import java.sql.ClientInfoStatus;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
/*
1.准备牌
2.洗牌
3.发牌
4.排序
5.看牌
*/
public class DouDiZhuDemo {
public static void main(String[] args) {
List<String> colors = List.of("♧", "♡", "♤", "♢");
List<String> numbers = List.of("2", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3", "A");
HashMap<Integer, String> poker = new HashMap<>();
ArrayList<Integer> pokerIndex = new ArrayList<>();
// 先把大王小王存储到集合中
// 定义一个牌的索引
int index = 0;
poker.put(index, "大王");
pokerIndex.add(index);
index++;
poker.put(index, "小王");
pokerIndex.add(index);
index++;
// 循环嵌套遍历两个集合,组装52张牌,存储到集合当中。
for (String number : numbers) {
for (String color : colors) {
// System.out.println(color+number);
poker.put(index, color + number);
pokerIndex.add(index);
index++;
}
}
// System.out.println(poker);
// System.out.println(pokerIndex);
/*
2.洗牌
使用Collections中的shuffle(list)方法
*/
Collections.shuffle(pokerIndex);
// System.out.println(pokerIndex);
/*
3.发牌
*/
// 定义4个集合,存储玩家牌的索引,和底牌的索引。
ArrayList<Integer> play01 = new ArrayList<>();
ArrayList<Integer> play02 = new ArrayList<>();
ArrayList<Integer> play03 = new ArrayList<>();
ArrayList<Integer> dipai = new ArrayList<>();
// 遍历存储牌索引的List集合,获取每一个牌的索引
for (int i = 0; i < pokerIndex.size(); i++) {
Integer in = pokerIndex.get(i);
if (i>=51){
dipai.add(in);
}else if (i%3==0){
play01.add(in);
}else if (i%3==1){
play02.add(in);
}else if (i%3==2){
play03.add(in);
}
}
/*
4.排序
使用Collections中的sort方法进行排序
默认是升序排序
*/
Collections.sort(play01);
Collections.sort(play02);
Collections.sort(play03);
Collections.sort(dipai);
// System.out.println(play01);
// System.out.println(play02);
// System.out.println(play03);
// System.out.println(dipai);
/*
定义一个看牌的方法,提高代码的复用性
参数:
String name:玩家名称
HashMap<Integer,String> poker:存储牌的poker集合
ArrayList<Integer> list :存储玩家和底牌的list集合
查表法:
遍历玩家或者底牌集合,获取牌的索引
使用牌的索引,去Map集合中,找到对应的牌
*/
lookPoker("刘德华",poker,play01);
lookPoker("周润发",poker,play02);
lookPoker("周星驰",poker,play03);
lookPoker("底牌",poker,dipai);
}
public static void lookPoker(String name,HashMap<Integer,String> poker,ArrayList<Integer> list){
// 输出玩家的名称,不换行
System.out.print(name +":");
// 遍历玩家或者底牌集合,获取牌的索引
for (Integer key : list) {
// 使用牌的索引,去Map集合中,找到对应的牌
String pai = poker.get(key);
System.out.print(pai+" ");
}
System.out.println();//打印完每一个玩家的牌换行
}
}