java實現撲克牌分發功能
阿新 • • 發佈:2020-05-21
本文例項為大家分享了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集合中,此時所有牌組準備完畢。
分別將三位玩家和底牌中的序號集合遍歷,遍歷出的數值帶入到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))); } } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。