小編這次要給大家分享的是java如何實現撲克牌分發功能,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
實現一個三人斗地主的撲克牌分發功能
思路:
1、準備一組54張的撲克牌
2、洗牌
3、將撲克牌分發到玩家手中
4、查看每個選手中的撲克牌和地主的底牌
思路補充:先創建兩個花色和數字的數組,再創建一個List集合,和Map集合,運用雙層for循環將花色和數字依次組合成52張撲克牌,之后分別在加添加進Map集合中的value值中,Map中的key值依次用0-51表示,雙層for循環的同時將0-51的值依次賦值給List集合中,循環結束后在依次將大王、小王加入Map集合中的value中相對應的key值用52和53表示,還要講52和53賦值到List集合中,此時所有牌組準備完畢。
分別創建四個新List集合,將存放序號的List集合中的序號打亂后分發到玩家手中,最后留三張底牌,添加到他們對應的List集合中
分別將三位玩家和底牌中的序號集合遍歷,遍歷出的數值帶入到Map中的get方法的key值中,得到相對應得value值(也就是對應的牌),再將value值賦值給玩家手中對應的序號值處。
最后將三位玩家和底牌所對應的List集合輸出打印出來即可看到他們被分到的牌。
具體代碼如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public class TestPokerPlus {
public static void main(String[] args) {
//1.創建撲克牌集合
//創建map集合,類似于字典 和 list序號集合
List list = new ArrayList();
HashMap<Integer,String> map = new HashMap<Integer,String>();
//將花色和數字及JQK組合添加進撲克牌集合map中
String[] color = {"♥","♦","♠","♣"};
String[] number = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
int num = 0;//計數器思想
for(int i = 0 ;i< number.length;i++){
for(int j = 0 ;j< color.length;j++){
map.put(num,color[j]+number[i]);
list.add(num);
num++;
}
}
//將序號集合中加入52,53兩位序列,為之后map集合中加入“大王”、“小王”做準備
list.add(list.size());
list.add(list.size());
//在加上大王、小王兩張牌
map.put(list.size()-2,"小王");
map.put(list.size()-1,"大王");
//2.打亂
//將序號集合打亂
Collections.shuffle(list);
//3.分牌
//創建三名玩家和底牌集合
List player1 = new ArrayList();
List player2 = new ArrayList();
List player3 = new ArrayList();
List cards = new ArrayList();
//循環分發序號
for(int i = 0 ;i<list.size();i++){
if(i<list.size()-3){
if(i % 3 == 1){
player1.add(list.get(i));
}else if(i % 3 == 2){
player2.add(list.get(i));
}else{
player3.add(list.get(i));
}
}else{
cards.add(list.get(i));
}
}
//將分的的序號升序排列
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
Collections.sort(cards);
//遍歷將3個玩家和底牌分得的序號集合 對照map集合重新將對應的牌賦值給對應的序號
boardAssignment(map, player1);
boardAssignment(map, player2);
boardAssignment(map, player3);
boardAssignment(map, cards);
//4.看牌
//打印輸出三名玩家的牌的底牌
System.out.println(player1);
System.out.println(player2);
System.out.println(player3);
System.out.println(cards);
}
private static void boardAssignment(HashMap<Integer, String> map,List list) {
for(int i = 0;i < list.size();i++){
list.set(i, map.get(list.get(i)));
}
}
}看完這篇關于java如何實現撲克牌分發功能的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。