Java使用集合實現(xiàn)斗地主分牌完整代碼
前言
今天使用集合TreeSet來實現(xiàn)一個斗地主的分牌流程。
TreeSet集合的一個特點就是 元素有序,這樣就方便我們分的牌自動排序。
0.思路

1.創(chuàng)建玩家手牌集合
我們到時候分的牌都存儲在這里,但你可能會有疑問,因為存儲的泛型是Integer,但撲克牌是有花色的,這該如何實現(xiàn)?
TreeSet<Integer> zhangsan=new TreeSet<Integer>();
TreeSet<Integer> lisi=new TreeSet<Integer>();
TreeSet<Integer> wangwu=new TreeSet<Integer>();
TreeSet<Integer> dipai=new TreeSet<Integer>();2.創(chuàng)建牌堆
我們創(chuàng)建了一個名為poke的HashMap結構,poke用來存儲我們的撲克,而poke的key是每一張牌的一個id,value就是具體的牌。
HashMap<Integer,String>poke=new HashMap<Integer,String>();
String[] color={"?","?","?","?"};
String[] number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};我們到時候洗牌的時候,洗的是這些id,但是并不是直接在poke中洗,poke的作用只是記錄我們有哪些牌。所以 我們在創(chuàng)建一個用來洗牌的數(shù)組,并把所有的id放入。
ArrayList<Integer> xipai=new ArrayList<Integer>();
3. 把牌放入牌堆
遍歷我們的String數(shù)組,把花色和牌號組合一下并放入poke中,同時把poke中的key放入我們的洗牌集合中。最后不要忘了大小王。
int index=0;
for(String Number:number){
for(String Color:color){
String POKE=Color+Number;
poke.put(index,POKE);
xipai.add(index);
index+=1;
}
}
poke.put(52,"小王");
poke.put(53,"大王");
xipai.add(52);
xipai.add(53);4.洗牌
一行代碼即可,使用Collecitons自帶的數(shù)組打亂方法。
Collections.shuffle(xipai);
5.進行分牌
如果只剩下最后三張了,就直接放入到我們的底牌集合當中,否則的話就進行模3取余操作進行判斷應該分給誰。
for(int i=0;i<xipai.size();i++){
if(i>=xipai.size()-3){
dipai.add(xipai.get(i));
}else{
if(i%3==0){
zhangsan.add(xipai.get(i));
}else if(i%3==1){
lisi.add(xipai.get(i));
}else
wangwu.add(xipai.get(i));
}
}6.完整代碼
public class Poker {
public static void main(String[] args) {
HashMap<Integer,String>poke=new HashMap<Integer,String>();
String[] color={"?","?","?","?"};
String[] number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
ArrayList<Integer> xipai=new ArrayList<Integer>();
TreeSet<Integer> zhangsan=new TreeSet<Integer>();
TreeSet<Integer> lisi=new TreeSet<Integer>();
TreeSet<Integer> wangwu=new TreeSet<Integer>();
TreeSet<Integer> dipai=new TreeSet<Integer>();
int index=0;
for(String Number:number){
for(String Color:color){
String POKE=Color+Number;
poke.put(index,POKE);
xipai.add(index);
index+=1;
}
}
poke.put(52,"小王");
poke.put(53,"大王");
xipai.add(52);
xipai.add(53);
Collections.shuffle(xipai);
//進行發(fā)牌
for(int i=0;i<xipai.size();i++){
if(i>=xipai.size()-3){
dipai.add(xipai.get(i));
}else{
if(i%3==0){
zhangsan.add(xipai.get(i));
}else if(i%3==1){
lisi.add(xipai.get(i));
}else
wangwu.add(xipai.get(i));
}
}
//進行看牌,用方法實現(xiàn)
LookPoker("張三",gyh,poke);
LookPoker("李四",zch,poke);
LookPoker("王五",wjq,poke);
LookPoker("底牌",dipai,poke);
//System.out.println(poke);
}
public static void LookPoker(String name,TreeSet<Integer>set,HashMap<Integer,String>map){
System.out.print(name+"的牌是:");
for(Integer i:set){
String poke=map.get(i);
System.out.print(poke+" ");
}
System.out.println();
}
}總結
到此這篇關于Java使用集合實現(xiàn)斗地主分牌完整代碼的文章就介紹到這了,更多相關Java集合實現(xiàn)斗地主分牌內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
java 記錄一個子串在整串中出現(xiàn)的次數(shù)實例
今天小編就為大家分享一篇java 記錄一個子串在整串中出現(xiàn)的次數(shù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
利用Java Apache POI 生成Word文檔示例代碼
本篇文章主要介紹了利用Java Apache POI 生成Word文檔示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
Spring Cache監(jiān)控配置與使用規(guī)范的建議
這篇文章主要介紹了Spring Cache監(jiān)控配置與使用規(guī)范的建議,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
springboot配置數(shù)據(jù)庫密碼特殊字符報錯的解決
這篇文章主要介紹了springboot配置數(shù)據(jù)庫密碼特殊字符報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02

