java练习:模拟试下你斗地主的洗牌、发牌、看牌功能

来源:互联网 发布:wpf listview数据绑定 编辑:程序博客网 时间:2024/06/05 11:49
/** * 需求:模拟实现斗地主的分牌情形 * 分析:1 模拟牌盒,存储54张牌,0-53 每个数字分别对应一张牌,用Map存储 * 2 将0-53序号随机分发到三个人手中,欲实现序号的随机排序,考虑使用Collections.shuffle() * 因此序号使用ArrayList存储 * 3 看牌,并且实现玩家手上的拍由小到大排序,所以考虑使用TreeSet存储 */package fmi1;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.TreeSet;public class PokerSimulate {/** * @param args */public static void main(String[] args) {//建立牌盒String[] color = {"♦","♣","♥","♠"};//花色String[] size ={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};//大小//建立集合存牌HashMap<Integer, String> hm = new HashMap<Integer,String>();//循环组牌并存至集合int key = 0;for(String s1:size){for(String s2:color){String value = s2 + s1;hm.put(key, value);key++;}}hm.put(key++, "LKing");hm.put(key, "BKing");//输出牌printPoke(hm);//建立ArrayList实现牌的序号的随机分布ArrayList<Integer> al = new ArrayList<Integer>();//存序号for(int i = 0;i < 54;i++){al.add(i);}//洗牌Collections.shuffle(al);//新建3个玩家和一个底牌,即TreeSet集合TreeSet<Integer> gamer1 = new TreeSet<Integer>();TreeSet<Integer> gamer2 = new TreeSet<Integer>();TreeSet<Integer> gamer3 = new TreeSet<Integer>();TreeSet<Integer> dipai = new TreeSet<Integer>();//发牌for(int i = 0;i<al.size();i++){if(i >= al.size()-3)dipai.add(al.get(i));else if(i%3==0)gamer1.add(al.get(i));else if(i%3==1)gamer2.add(al.get(i));else gamer3.add(al.get(i));}//System.out.println(gamer1);//System.out.println(gamer2);//System.out.println(gamer3);//System.out.println(dipai);//看牌System.out.println("玩家1:");checkPoker(gamer1,hm);System.out.println("玩家2:");checkPoker(gamer2,hm);System.out.println("玩家3:");checkPoker(gamer3,hm);System.out.println("底牌:");checkPoker(dipai,hm);}private static void checkPoker(TreeSet<Integer> gamer,HashMap<Integer, String> hm) {for(int key:gamer){//System.out.print(key+" ");System.out.print(hm.get(key)+" ");}System.out.println();}private static void printPoke(HashMap<Integer, String> hm) {System.out.print("扑克牌:");for (int i = 0; i < hm.size(); i++) {if (i % 4 == 0)System.out.println();System.out.print(hm.get(i) + "\t");}System.out.println();}}
运行结果
扑克牌:♦3♣3♥3♠3♦4♣4♥4♠4♦5♣5♥5♠5♦6♣6♥6♠6♦7♣7♥7♠7♦8♣8♥8♠8♦9♣9♥9♠9♦10♣10♥10♠10♦J♣J♥J♠J♦Q♣Q♥Q♠Q♦K♣K♥K♠K♦A♣A♥A♠A♦2♣2♥2♠2LKingBKing玩家1:♣3 ♦4 ♠5 ♦6 ♣7 ♥7 ♠7 ♦9 ♣10 ♠J ♣Q ♥Q ♦K ♦A ♦2 ♠2 LKing 玩家2:♦3 ♥3 ♠4 ♦5 ♣6 ♦8 ♣9 ♥9 ♥10 ♦J ♣J ♥J ♠Q ♣K ♣A ♥A ♣2 玩家3:♠3 ♣4 ♥4 ♣5 ♥5 ♥6 ♦7 ♥8 ♠8 ♠9 ♦10 ♦Q ♥K ♠K ♠A ♥2 BKing 底牌:♠6 ♣8 ♠10 


0 0
原创粉丝点击