这篇文章主要讲解了“如何用Java写一个斗地主”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用Java写一个斗地主”吧!

思路:

1.创建HashMap,键是编号,值是牌。
2.创建ArrayList,存储编号。
3.创建花色数组和点数数组。
4.从0开始往HashMap里面存储编号,并存储对应的牌。同时往ArrayList里面存储编号。
5.洗牌(洗的是编号),用Collections的shuffl()方法实现。
6.发牌(发的也是编号,为了保证编号是排序的,创建TreeSet集合。
7.定义方法看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
8.调用看牌方法

具体代码实现:1.创建集合装扑克牌

//创建HashMap集合key是编号用Integervalue是牌用StringHashMap<Integer,String>hm=newHashMap<>();//创建ArrayList集合用来存储编号ArrayList<Integer>list=newArrayList<>();//创建花色数组和点数数组String[]color={"♠","♦","♥","♣"};String[]number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};//从0开始往HashMap集合里面存储编号,并存储对应的牌。同时往ArrayList集合里面存储编号intindex=0;//增强For循环存储花色和点数for(Stringnum:number){for(Stringcol:color){hm.put(index,col+num);list.add(index);index++;}}//52张牌存完了还剩大小王现在添加进去hm.put(index,"小王");list.add(index);index++;hm.put(index,"大王");list.add(index);//以上的操作实现了把54张扑克牌放入一个集合容器。2.洗牌和发牌

//洗牌(洗的是编号),用collections的shuffle()方法实现。Collections.shuffle(list);//发牌用TreeSet接收用三位玩家名字命名TreeSet<Integer>PDD=newTreeSet<>();TreeSet<Integer>DaSiMa=newTreeSet<>();TreeSet<Integer>LuBenWei=newTreeSet<>();//三张底牌TreeSet<Integer>finalCard=newTreeSet<>();for(intx=0;x<list.size();x++){//定义一个变量接收索引inta=list.get(x);//最后三个索引if(x>=list.size()-3){finalCard.add(a);}elseif(x%3==0){PDD.add(a);}elseif(x%3==1){DaSiMa.add(a);}else{LuBenWei.add(a);}}3.定义看牌方法

//定义看牌的方法(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)publicstaticvoidlookPoker(Stringname,TreeSet<Integer>ts,HashMap<Integer,String>hm){System.out.print(name+"的手牌为:");//遍历牌就是遍历索引for(Integerkey:ts){Stringpoker=hm.get(key);System.out.print(poker+"");}System.out.println();}原码:

package模拟斗地主;importjava.util.ArrayList;importjava.util.Collections;importjava.util.HashMap;importjava.util.TreeSet;/*需求:通过程序实现斗地主过程中的洗牌,发牌和看牌功能,并且为了方便看牌手牌要排序。思路:1:创建HashMap集合,键是编号,值是牌。2:创建Arraylist集合用于存储编号。3:创建花色数组和点数数组。4:从0开始往HashMap集合里面存储编号,并存储对应的牌。同时往ArrayList集合里面存储编号。5:洗牌(洗的是编号),用collections的shuffle()方法实现。6:发牌(发的也是编号,为了保证编号是排序的,创建TreeSet集合接收7:定义方法看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)8:调用方法看牌*/publicclassChinesePoker{publicstaticvoidmain(String[]args){//创建HashMap集合key是编号用Integervalue是牌用StringHashMap<Integer,String>hm=newHashMap<>();//创建ArrayList集合用来存储编号ArrayList<Integer>list=newArrayList<>();//创建花色数组和点数数组String[]color={"♠","♦","♥","♣"};String[]number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};//从0开始往HashMap集合里面存储编号,并存储对应的牌。同时往ArrayList集合里面存储编号intindex=0;//增强For循环存储花色和点数for(Stringnum:number){for(Stringcol:color){hm.put(index,col+num);list.add(index);index++;}}//52张牌存完了还剩大小王现在添加进去hm.put(index,"小王");list.add(index);index++;hm.put(index,"大王");list.add(index);//洗牌(洗的是编号),用collections的shuffle()方法实现。Collections.shuffle(list);//发牌用TreeSet接收用三位玩家名字命名TreeSet<Integer>PDD=newTreeSet<>();TreeSet<Integer>DaSiMa=newTreeSet<>();TreeSet<Integer>LuBenWei=newTreeSet<>();//三张底牌TreeSet<Integer>finalCard=newTreeSet<>();for(intx=0;x<list.size();x++){//定义一个变量接收索引inta=list.get(x);//最后三个索引if(x>=list.size()-3){finalCard.add(a);}elseif(x%3==0){PDD.add(a);}elseif(x%3==1){DaSiMa.add(a);}else{LuBenWei.add(a);}}//调用看牌方法lookPoker("PDD",PDD,hm);lookPoker("大司马",DaSiMa,hm);lookPoker("卢本伟",LuBenWei,hm);lookPoker("底牌",finalCard,hm);}//定义看牌的方法(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)publicstaticvoidlookPoker(Stringname,TreeSet<Integer>ts,HashMap<Integer,String>hm){System.out.print(name+"的手牌为:");//遍历牌就是遍历索引for(Integerkey:ts){Stringpoker=hm.get(key);System.out.print(poker+"");}System.out.println();}}

感谢各位的阅读,以上就是“如何用Java写一个斗地主”的内容了,经过本文的学习后,相信大家对如何用Java写一个斗地主这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!