package com.athena.sys.modular.foreign.utils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
* @author wzq
* @event
* @describe
* @Data on 2021/8/10 14:32
*/
public class TestRun {
/*
* 具体规则:
1. 组装54张扑克牌,扑克牌带花色
2. 将54张牌顺序打乱
3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
4. 查看三人各自手中的牌、底牌
5. 要求每个人手中的牌按照大小进行排序 :
手中扑克牌从大到小的摆放顺序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3
* */
public static void main(String[] args) {
Map<Integer,String> Pai = new HashMap<>();
ArrayList<Integer> list = new ArrayList<>();
String[] biaoShi = {"2","A","K","Q","J","3","4","5","6","7","8","9","10"};
String[] huaSe = {"♠","♥","♦","♣"};
//将扑克牌中的A到K全部录入进集合
//将建设置为2到54的方便将这些个牌号进行排序
//留出来的0和1是为了给大小王
int index = 2;
for (String biao: biaoShi){
for (String hua: huaSe){
String s = hua+biao;
Pai.put(index,s);
list.add(index);
index++;
}
}
//将大小王和其所以0,1录入进Map和ArrayList集合
Pai.put(0,"大王");
Pai.put(1,"小王");
list.add(0);
list.add(1);
//将List打乱,也就是将Map的键打乱,进而打乱值
Collections.shuffle(list);
//建立三个用户一个底牌的集合方便向里面录入
ArrayList<Integer> player1 = new ArrayList<>();
ArrayList<Integer> player2 = new ArrayList<>();
ArrayList<Integer> player3 = new ArrayList<>();
ArrayList<Integer> diPai = new ArrayList<>();
for (int i = 0;i < list.size();i++){
//因为索引从零开始因此54张牌最大排数为53
//因此需要小于等于51才能获取到三张底牌
if (i >= 51){
//将list里面的i值添加进来
diPai.add(list.get(i));
}else if (i % 3 == 0){
player1.add(list.get(i));
}else if (i % 3 == 1){
player2.add(list.get(i));
}else {
player3.add(list.get(i));
}
}
//再将三个用户和一个底牌按照顺序排列
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
Collections.sort(diPai);
paiXu("农民",player1,Pai);
paiXu("农民",player2,Pai);
paiXu("地主",player3,Pai);
paiXu("底牌",diPai,Pai);
}
public static void paiXu(String name,ArrayList<Integer> list,Map<Integer,String> m){
//将用户加在最前面
System.out.print(name+":"+" ");
//将List里面的值遍历和Map里面的键相关联
for (Integer key : list){
//获取到的就是Map的键值
String value = m.get(key);
//输出value值
System.out.print(value+" ");
}
System.out.println();
}
}
Java-斗地主
最新推荐文章于 2024-09-21 15:01:06 发布