• java集合框架(斗地主洗牌发牌)


    package dou_di_zhu;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Collections;
    import java.util.HashMap;
    import java.util.TreeSet;
    
    /**
     * 思路:
     *         A:创建一个HashMap集合
     *         B:创建一个ArrayList集合
     *         C:创建花色数组和点数数组
     *         D:从0开始往HashMap里面存储编号,并存储对应的牌
     *             同时往ArrayList里面存储编号即可
     *         E:洗牌(洗的是编号)
     *         F:发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)
     *         G:看牌(遍历TreeSet集合,获取编号,到HashMap中找对应的牌)
     * @author user
     *
     */
    public class PokerDemo1 {
        public static void main(String[] args) {
            //创建一个HashMap集合
            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){
                    String poker = color.concat(number);
                    hm.put(index, poker);
                    array.add(index);
                    index++;
                }
            }
            hm.put(index, "小王");
            array.add(index);
            index++;
            hm.put(index, "大王");
            array.add(index);
            
            //洗牌(洗的是编号)
            Collections.shuffle(array);
            
            //发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)
            TreeSet<Integer> fanBingBing = new TreeSet<Integer>();
            TreeSet<Integer> sunHang = new TreeSet<Integer>();
            TreeSet<Integer> linQingXia = new TreeSet<Integer>();
            TreeSet<Integer> diPai = new TreeSet<Integer>();
            
            for (int x = 0; x < array.size(); x++) {
                if (x >= array.size() - 3) {
                    diPai.add(array.get(x));
                }else if (x%3 == 0) {
                    fanBingBing.add(array.get(x));
                }else if (x%3 == 1) {
                    sunHang.add(array.get(x));
                }else if (x%3 == 2) {
                    linQingXia.add(array.get(x));
                }
            }
            
            //看牌(遍历TreeSet集合,获取编号,到HashMap中找对应的牌)
            lookPoker("王祖贤",fanBingBing,hm);
            lookPoker("张曼玉",sunHang,hm);
            lookPoker("林青霞",linQingXia,hm);
            lookPoker("底牌",diPai,hm);
        }
        //看牌的功能实现
        public static void lookPoker(String name,TreeSet<Integer> ts,
                HashMap<Integer, String> hm){
            System.out.println(name + "的牌是:");
            for(Integer key : ts){
                String value = hm.get(key);
                System.out.print(value + " ");
            }
            System.out.println();
        }
    }
  • 相关阅读:
    servlet和JSP页面乱码问题
    用例图——远程网络教学系统
    struts 2 实现表单传送数据到数据库
    Java web jsp页面实现日历的显示 (/WdatePicker控件)
    抽象类与继承相关练习(java)
    (一)、写一个怪物的类,类中有属性姓名(name),攻击力(attack),有打人的方法(fight)。(方法的重写)
    构造方法是练习
    类和对象 练习
    String字符串相关练习
    Java 数组中删除数据
  • 原文地址:https://www.cnblogs.com/javacoding/p/5364091.html
Copyright © 2020-2023  润新知