• 通过Java实现斗地主


    功能:洗牌,发牌,对玩家手中的牌排序,看牌

    package demo06;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.HashMap;
    
    /**
     * 
     * @author Administrator
     *    实现模拟斗地主的功能
     *    1.组合牌
     *    2.洗牌
     *    3.发牌
     *    4.看牌
     */
    public class DouDiZhu {
        public static void main(String[] args) {
            //1. 组合牌
            //创建Map集合,键是编号,值是牌
            HashMap<Integer, String> pooker=new HashMap<>();
            //创建List集合,存储编号
            ArrayList<Integer> pookerNumber=new ArrayList<>();
            //定义出13个点数的数组
            String[] numbers = {"2","A","K","Q","J","10","9","8",
                    "7","6","5","4","3"};
            //定义四个花色数组
            String[] colors={"♥","♠","♣","♦"};
            //定义整数变量,作为键出现
            int index=2; //先避开大小王 
            //遍历数组,花色+点数的组合存储到Map集合
            for(String number:numbers){
                for(String color:colors){
                    pooker.put(index,color+number);
                    pookerNumber.add(index);
                    index++;
                }
            }
            //存储大王,和小王
            pooker.put(0, "大王");
            pookerNumber.add(0);
            pooker.put(1, "小王");
            pookerNumber.add(1);
            
            //洗牌,将牌的编号打乱
            Collections.shuffle(pookerNumber);
    
            
            //发牌功能,将牌编号,发给玩家集合,底牌集合
            ArrayList<Integer> player1=new ArrayList<>();
            ArrayList<Integer> player2=new ArrayList<>();
            ArrayList<Integer> player3=new ArrayList<>();
            ArrayList<Integer> bottom=new ArrayList<>();
            
            //发牌采用的是集合索引%3
            for(int i=0;i<pookerNumber.size();i++){
                //先将底牌做好
                if(i<3){
                    //存到底牌去
                    bottom.add(pookerNumber.get(i));
                }
                
                //对索引%3判断
                else if(i%3==0){
                    //索引上的编号,发给玩家1
                    player1.add(pookerNumber.get(i));
                }else if(i%3==1){
                    //索引上的编号,发给玩家2
                    player2.add(pookerNumber.get(i));
                }else if(i%3==2){
                    //索引上的编号,发给玩家3
                    player3.add(pookerNumber.get(i));
                }
            }
            //对玩家手中的编号排序
            Collections.sort(player1);
            Collections.sort(player2);
            Collections.sort(player3);
            //看牌,将玩家手中的编号,到Map集合中查找,根据键找值
            look("刘德华",player1,pooker);
            look("张学友",player2,pooker);
            look("黎明",player3,pooker);
            look("底牌",bottom,pooker);
            
        }
        public static void look(String name,ArrayList<Integer> player,HashMap<Integer, String> pooker){
            //遍历ArrayList集合,获取元素,作为键,到集合Map中找值
            System.out.println(name+":");
            for(Integer key:player){
                String value=pooker.get(key);
                System.out.print(value+" ");
            }
            System.out.println();
        }
    }

  • 相关阅读:
    FireFox/Chrome不支持在前台js读后台Attributes.Add("DefaultValue")的属性
    IIS Web怪问题: Access is denied due to invalid credentials.
    转:OWC学习笔记电子表格(Spreadsheet)风格属性设置
    最全的CSS浏览器兼容问题整理(IE6.0、IE7.0 与 FireFox)
    转:[网站安全]避免在站点中通过URL参数做重定向
    [SQL Server 2005 BI]在.NET中创建SQL 2005 KPI
    即使asp:TreeView有几万个节点,也让IE不死的解决方法
    Visual Totals in MDX and Role Security
    css hack
    让Updatepanel中的控件触发整个页面Postback
  • 原文地址:https://www.cnblogs.com/benjamin77/p/9125072.html
Copyright © 2020-2023  润新知