1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Java实现斗地主实例

Java实现斗地主实例

时间:2021-09-16 06:51:50

相关推荐

Java实现斗地主实例

分析:

首先,我们来梳理一下规则:

准备牌阶段:斗地主一般用一副牌,有54张,其中有大王小王各1张,其他52张牌,分别是4个花色,每种花色13张。四种花色分别为♥ ♦ ♠ ♣,定义一个集合来存储它们;而每一种花色中的13张牌为:(由大到小)2 A K Q J 10 9 8 7 6 5 4 3,也定义一个集合来存储它们。遍历这两个集合,可以组装成为52张牌,例如♣7 ♥A

洗牌阶段:使用集合工具类Collections方法,其中static void shuffle(List<?> list)使用指定的随机数对指定列表进行置换,会随机的打乱集合中的元素的顺序

发牌阶段:要求每一位玩家拥有17张牌,剩余三张作为底牌,一人一张轮流发牌:集合的索引(0-53)%3,定义4个集合,来存储3个玩家的牌和场上的底牌。索引%3,有三个值(0,1,2),0%3=0,1%3=1,2%3=2,3%3=0,当索引>=51时,改为发底牌

看牌阶段:直接打印集合,遍历存储玩家和底牌的集合

import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.TreeSet;public class PokerDemo {public static void main(String[] args) {HashMap<Integer,String> hm=new HashMap<Integer,String>();//创建arraylist,存储编号ArrayList<Integer> array=new ArrayList<Integer>();//创建花色数组和点数数组String[] colors={"♦","♣","♠","❤"};String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};//从0开始向Hashmap存取编号,并存储对应的牌。同时往Arraylist存取编号int index=0;for (String number:numbers){for (String color:colors){hm.put(index,color+number);array.add(index);index++;}}hm.put(index,"小王");array.add(index);index++;hm.put(index,"大王");array.add(index);//洗牌(洗的时编号),用collection的shuffle方法实现Collections.shuffle(array);//发牌TreeSet<Integer> lqx=new TreeSet<Integer>();TreeSet<Integer> ly=new TreeSet<Integer>();TreeSet<Integer> fqx=new TreeSet<Integer>();TreeSet<Integer> dp=new TreeSet<Integer>();for (int i=0;i<array.size();i++){int x=array.get(i);if (i>=array.size()-3){dp.add(x);} else if (i%3==0) {lqx.add(x);} else if (i%3==1) {ly.add(x);} else if (i%3==2) {fqx.add(x);}}lookPoker("林青霞",lqx,hm);lookPoker("柳岩",ly,hm);lookPoker("风清扬",fqx,hm);lookPoker("底牌",dp,hm);//定义方法看牌}public static void lookPoker(String name,TreeSet<Integer> ts,HashMap<Integer,String> hm){System.out.print(name+"的牌是:");for (Integer key:ts){String Poker = hm.get(key);System.out.print(Poker+" ");}System.out.println("\n");}}

结果展示:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。