zoukankan      html  css  js  c++  java
  • JAVA代码之斗地主发牌

    理解很好理解,关键是思路

    按照斗地主的规则,完成洗牌发牌的动作:

     具体规则:

        1. 组装54张扑克牌

     2. 将54张牌顺序打乱

        3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。

        4. 查看三人各自手中的牌(按照牌的大小排序)、底牌

     手中扑克牌从大到小的摆放顺序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3

    package com.oracle.demo01;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.HashMap;
    import java.util.Map;
    
    public class Doudizhu {
        public static void main(String[] args) {
            //1.创建扑克牌Map
            Map<Integer,String> pooker=new HashMap<Integer,String>();
            //创建所有key所在的容器
            ArrayList<Integer> pookerNum=new ArrayList<Integer>();
            //创建花色数组
            String[] color={"♠","♣","♥","♦"};
            //创建牌号数组
            String[] number={"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
            //造牌并存进map集合
            int index=2;
            for(String n:number){
                for(String c:color){
                    //向map中存数据
                    pooker.put(index,c+n);
                    //向所有key所在的容器存数据
                    pookerNum.add(index);
                    index++;    
                }
            }
            //存大小王
            pooker.put(0, "大王");
            pookerNum.add(0);
            pooker.put(1, "小王");
            pookerNum.add(1);
            //洗牌
            Collections.shuffle(pookerNum);
            //System.out.println(pookerNum);
            //发牌
            //创建四个容器
            ArrayList<Integer> bottom=new ArrayList<>();
            ArrayList<Integer> player1=new ArrayList<>();
            ArrayList<Integer> player2=new ArrayList<>();
            ArrayList<Integer> player3=new ArrayList<>();
            //开始发牌
            for(int i=0;i<pookerNum.size();i++){
                //将前三张给底牌
                if(i<3){
                    bottom.add(pookerNum.get(i));
                }else if(i%3==0){
                    player1.add(pookerNum.get(i));
                }else if(i%3==1){
                    player2.add(pookerNum.get(i));
                }else if(i%3==2){
                    player3.add(pookerNum.get(i));
                }
            }
            //排序(key升序 牌从大到小)
            Collections.sort(bottom);
            Collections.sort(player1);
            Collections.sort(player2);
            Collections.sort(player3);
            //看牌(调用方法)
            look("刘德华",player1,pooker);
            look("张家辉",player2,pooker);
            look("周润发",player3,pooker);
            look("底牌",bottom,pooker);
        }
        //看牌的方法(传参为  玩家姓名,玩家的牌即键,所有牌的键值对)
        public static void look( String name,ArrayList<Integer> player,Map<Integer,String> pooker){
            //打印玩家姓名
            System.out.print(name+":");
            //遍历所有牌号
            for(int num:player){
                System.out.print(pooker.get(num)+" ");
            }
            System.out.println();
        }
    }
  • 相关阅读:
    Nginx +keepalived
    iptables
    编译安装HTTPD 2.4.9版本
    Apache+lvs高可用+keepalive(主从+双主模型)
    LVS-HA
    corosync+pacemaker实现高可用(HA)集群
    NTP
    私人定制自己的linux小系统
    大数据处理-bitmap是个神马东西
    CSS3制作苹果风格键盘
  • 原文地址:https://www.cnblogs.com/21-forever/p/10958611.html
Copyright © 2011-2022 走看看