JAVA实例之斗地主(基于LinkedHashMap的发牌自动排序)
代码
package com.Map;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Set;
public class doudizhu {
public static void main(String[] args) {
LinkedHashMap<Integer,String> hash = new LinkedHashMap<>();
ArrayList<String> color = new ArrayList<>();
ArrayList<String> num = new ArrayList<>();
ArrayList<String> sum = new ArrayList<>();
Collections.addAll(color,"♥","♠","♣","♦");
Collections.addAll(num,"2","A","K","Q","J","10","9","8","7","6","5","4","3");
for (String n : num) {
for (String col: color) {
sum.add(col+n);
}
}
int count = 0;
hash.put(count++,"大王");
hash.put(count++,"小王");
for (String s : sum) {
hash.put(count++,s);
}
Set<Integer> set = hash.keySet();
ArrayList<Integer> arr = new ArrayList<>();
arr.addAll(set);
Collections.shuffle(arr);
ArrayList<Integer> per1 = new ArrayList<>();
ArrayList<Integer> per2 = new ArrayList<>();
ArrayList<Integer> per3 = new ArrayList<>();
ArrayList<Integer> rest = new ArrayList<>();
for (int i = 0; i < 51; i++) {
if(i%3==0)
per1.add(arr.get(i));
else if(i%3==1)
per2.add(arr.get(i));
else
per3.add(arr.get(i));
}
rest.add(arr.get(51));
rest.add(arr.get(52));
rest.add(arr.get(53));
Collections.sort(per1);
Collections.sort(per2);
Collections.sort(per3);
Collections.sort(rest);
ArrayList<String> pai1 = new ArrayList<>();
ArrayList<String> pai2 = new ArrayList<>();
ArrayList<String> pai3 = new ArrayList<>();
ArrayList<String> pairest = new ArrayList<>();
for (Integer p1 : per1) {
pai1.add(hash.get(p1));
}
for (Integer p2 : per2) {
pai2.add(hash.get(p2));
}
for (Integer p3 : per3) {
pai3.add(hash.get(p3));
}
for (Integer p4 : rest) {
pairest.add(hash.get(p4));
}
System.out.println("第一个人的牌 :"+pai1);
System.out.println("第二个人的牌 :"+pai2);
System.out.println("第三个人的牌 :"+pai3);
System.out.println("底牌 :"+pairest);
}}
结果(其中之一)
第一个人的牌 :[大王, ♣2, ♠A, ♥Q, ♠Q, ♣Q, ♥J, ♦J, ♥8, ♠7, ♦7, ♦6, ♠5, ♦5, ♠4, ♦4, ♥3]
第二个人的牌 :[♥2, ♦A, ♦K, ♦Q, ♠J, ♠10, ♣10, ♦10, ♥9, ♠9, ♣9, ♥7, ♣7, ♥6, ♣6, ♥4, ♦3]
第三个人的牌 :[小王, ♦2, ♥K, ♠K, ♣K, ♣J, ♥10, ♦9, ♠8, ♣8, ♦8, ♠6, ♥5, ♣5, ♣4, ♠3, ♣3]
底牌 :[♠2, ♥A, ♣A]
Process finished with exit code 0