第一种排序
根据花色,把相同的花色排到一起,然后将其花色一样的再进行排序
第一种排序参照代码中all()方法
第二种排序
真实的模拟斗地主游戏的排序玩法,即按照大王(这里用的是JOKER)joker2AKQJ109876543的顺序进行排序,花色顺序可以自己调整
第二种排序参照代码中all2()方法
下面是具体的代码实现,切换功能的话,可以修改无参构造器中的调用的具体方法,把all2()方法修改为all()方法即可切换
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
public class ThreeDemo2 {
static List<Integer> list = new ArrayList<Integer>();
static List<String> list1 = new ArrayList<String>();
static List<String> list2 = new ArrayList<String>();
static List<Integer> player1 = new ArrayList<Integer>();
static List<Integer> player2 = new ArrayList<Integer>();
static List<Integer> player3 = new ArrayList<Integer>();
static List<Integer> diPai = new ArrayList<Integer>();
static int index = 0;
static int spe;
static Map<Integer, String> map = new HashMap<Integer, String>();
public static void main(String[] args) {
new ThreeDemo2();
}
public ThreeDemo2() {
list1.add("♠");
list1.add("♥");
list1.add("♣");
list1.add("♦");
list2.add("2");
list2.add("3");
list2.add("4");
list2.add("5");
list2.add("6");
list2.add("7");
list2.add("8");
list2.add("9");
list2.add("10");
list2.add("J");
list2.add("Q");
list2.add("K");
list2.add("A");
all2();
pecialPai();
threePlayer();
look("赌神", player1, map);
look("赌圣", player2, map);
look("赌王", player3, map);
look("底牌", diPai, map);
System.out.print("地主牌为:");
System.out.println(map.get(spe));
}
public static void all() {
map.put(index, "JOKER");
list.add(index);
index++;
map.put(index, "joker");
list.add(index);
index++;
for (String color : list1) {
for (String num : list2) {
map.put(index, color+num);
list.add(index);
index++;
}
}
}
public static void all2() {
map.put(index, "JOKER");
list.add(index);
index++;
map.put(index, "joker");
list.add(index);
index++;
for (int i = 0; i < list1.size(); i++) {
map.put(index, list1.get(i)+list2.get(0));
list.add(index);
index++;
}
for (int i = list2.size()-1; i >= 1; i--) {
for (int j = 0; j < list1.size(); j++) {
map.put(index, list1.get(j)+list2.get(i));
list.add(index);
index++;
}
}
}
public static void pecialPai() {
Random random = new Random();
spe = random.nextInt(51);
}
public static void threePlayer() {
Collections.shuffle(list);
diPai.add(list.get(51));
diPai.add(list.get(52));
diPai.add(list.get(53));
for (int i = 0; i < list.size()-3; i++) {
if (i%3 == 0) {
player1.add(list.get(i));
}
if (i%3 == 1) {
player2.add(list.get(i));
}
if (i%3 == 2) {
player3.add(list.get(i));
}
}
for (int i = 0; i < player1.size(); i++) {
if (player1.get(i) == spe) {
player1.addAll(diPai);
}
}
for (int i = 0; i < player2.size(); i++) {
if (player2.get(i) == spe) {
player2.addAll(diPai);
}
}
for (int i = 0; i < player3.size(); i++) {
if (player3.get(i) == spe) {
player3.addAll(diPai);
}
}
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
Collections.sort(diPai);
}
public static void look(String name,List<Integer> player,Map<Integer,String> allPai) {
System.out.print(name + ":");
for (Integer key : player) {
String value = allPai.get(key);
System.out.print(value+" ");
}
System.out.println();
}
}
var foo = 'bar';
具体实现的图片如下:

切换方法为all()后的实现图为:

老规矩有什么,有什么bug或者不懂的可以私聊我哦qq:1638580498