1. 程式人生 > >撲克牌的排序版本(制造撲克牌,發牌)

撲克牌的排序版本(制造撲克牌,發牌)

HA num 四種 str 字符 int ati index string


import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class practice01 {
public static void main(String[] args) {
//封裝撲克牌,四種花色
String[] colors={"?","?","?","?"};
String[] nums={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
//定義一個Map來裝撲克牌,鍵是用來存儲54張撲克牌對應的序號,值就是撲克牌的牌面
Map<Integer,String> pokerMap=new HashMap<>();
//來裝撲克牌的54個序號
List<Integer> indexList=new ArrayList<>();
int index=1;
//用的是數字排序,所以必須把nums放在外層;如果用花色排序,則把colors放在外層
for (String n : nums) {
for(String c:colors){
pokerMap.put(index, c+n);
indexList.add(index);
index++;
}
}


//封裝大小王,上一步完成之後,index=53
pokerMap.put(index, "小王");
indexList.add(index);
index++;
pokerMap.put(index, "大王");
indexList.add(index);
//洗撲克牌,集合工具類的方法
Collections.shuffle(indexList);
//發牌,用數組來裝序號的數字,序號大於51的三張撲克牌作為底牌
List<Integer> user1=new ArrayList<>();
List<Integer> user2=new ArrayList<>();
List<Integer> user3=new ArrayList<>();
List<Integer> dipai=new ArrayList<>();
//根據取模3的余數來分配給玩家對應的撲克牌
for (int i = 0; i < indexList.size(); i++) {
if(i>=indexList.size()-3){
dipai.add(indexList.get(i));
}else if(i % 3==0){
user1.add(indexList.get(i));
}else if(i % 3==1){
user2.add(indexList.get(i));
}else if(i % 3==2){
user3.add(indexList.get(i));
}
}
//排序,每個玩家的撲克牌分別排序
Collections.sort(user1);
Collections.sort(user2);
Collections.sort(user3);
Collections.sort(dipai);
//看牌,用戶的序號作為map的鍵找出與之對應的值
System.out.println("卡特的牌:");
printSee(pokerMap,user1);
System.out.println("蓋倫的牌:");
printSee(pokerMap,user2);
System.out.println("劍聖的牌:");
printSee(pokerMap,user3);
System.out.println("底牌牌:");
printSee(pokerMap,dipai);
}

//寫一個方法來看牌,降低代碼的冗余性
private static void printSee(Map<Integer, String> map, List<Integer> user) {
//創建字符串容器,拼接每個玩家的撲克牌
StringBuilder bul=new StringBuilder("[");
for(int i=0;i<user.size();i++){
if(i<user.size()-1){
bul.append(map.get(user.get(i))).append(",");
}else{
bul.append(map.get(user.get(i))).append("]");
}
}
//轉換成字符串方式
System.out.println(bul.toString());
}
}

撲克牌的排序版本(制造撲克牌,發牌)