JAVA斗地主发牌简写

JAVA斗地主发牌简写

代码实现:

package zr;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;

public class DouDiZhu {
    public static void main(String[] args){
        HashMap<Integer, String> pokes = new HashMap<>();
        List<Integer> Numberpokes = new ArrayList<>();
        List<String> colors = new ArrayList<>();
        List<String> numbers = new ArrayList<>();
        //添加四种花色
        colors.add("♥");
        colors.add("♠");
        colors.add("♦");
        colors.add("♣");
        //添加牌的序号
        numbers.add("2");
        numbers.add("A");
        numbers.add("K");
        numbers.add("Q");
        numbers.add("J");
        for(int i = 10; i >= 3; i--){
            numbers.add(i + "");
        }

        //将54张牌添加进牌库
        int iii = 2;
        for(String c:colors){
            for(String n:numbers){
                pokes.put(iii, c + n);
                Numberpokes.add(iii);
                iii++;
            }
        }
        pokes.put(1, "小王");
        Numberpokes.add(1);
        pokes.put(0, "大王");
        Numberpokes.add(0);

        //展示所有牌
        System.out.println(pokes);

        //打乱所有牌
        Collections.shuffle(Numberpokes);

        //添加三位玩家和底牌
        ArrayList<Integer> Player1 = new ArrayList<>();
        ArrayList<Integer> Player2 = new ArrayList<>();
        ArrayList<Integer> Player3 = new ArrayList<>();
        ArrayList<Integer> Dipai = new ArrayList<>();

        //将所有牌发给三位玩家以及剩余三张留为底牌
        for(int i = 0; i < Numberpokes.size(); i++){
            int pai = Numberpokes.get(i);
            if(i >= 51){
                Dipai.add(pai);
            }else{
                if(i%3==0){
                    Player1.add(pai);
                }else if(i%3==1){
                    Player2.add(pai);
                }else{
                    Player3.add(pai);
                }
            }
        }

        //将玩家手中下发的乱序牌排序
        Collections.sort(Player1);
        Collections.sort(Player2);
        Collections.sort(Player3);

        //展示三位玩家手中的牌和底牌
        System.out.println("—————————————————————————————————————————————————————————————");
        System.out.println("发牌后:");
        show("底牌\t", Dipai, pokes);
        show("Player1\t", Player1, pokes);
        show("Player2\t", Player2, pokes);
        show("Player3\t", Player3, pokes);
    }

    public static void show(String str,ArrayList<Integer> name,HashMap<Integer,String> poke){
        System.out.print(str + "\t");
        for(Integer i:name){
            String s = poke.get(i);
            System.out.print(s + "\t");
        }
        System.out.println();
    }
}

运行结果:
{0=大王, 1=小王, 2=♥2, 3=♥A, 4=♥K, 5=♥Q, 6=♥J, 7=♥10, 8=♥9, 9=♥8, 10=♥7, 11=♥6, 12=♥5, 13=♥4, 14=♥3, 15=♠2, 16=♠A, 17=♠K, 18=♠Q, 19=♠J, 20=♠10, 21=♠9, 22=♠8, 23=♠7, 24=♠6, 25=♠5, 26=♠4, 27=♠3, 28=♦2, 29=♦A, 30=♦K, 31=♦Q, 32=♦J, 33=♦10, 34=♦9, 35=♦8, 36=♦7, 37=♦6, 38=♦5, 39=♦4, 40=♦3, 41=♣2, 42=♣A, 43=♣K, 44=♣Q, 45=♣J, 46=♣10, 47=♣9, 48=♣8, 49=♣7, 50=♣6, 51=♣5, 52=♣4, 53=♣3}
—————————————————————————————————————————————————————————————
发牌后:
底牌 ♠A ♠9 ♠8
Player1 大王 ♥10 ♥9 ♥7 ♥6 ♥4 ♠6 ♠3 ♦2 ♦A ♦J ♦10 ♦4 ♦3 ♣6 ♣4 ♣3
Player2 小王 ♥2 ♥A ♥K ♥Q ♥8 ♠K ♠Q ♠7 ♠5 ♦9 ♦6 ♦5 ♣K ♣8 ♣7 ♣5
Player3 ♥J ♥5 ♥3 ♠2 ♠J ♠10 ♠4 ♦K ♦Q ♦8 ♦7 ♣2 ♣A ♣Q ♣J ♣10 ♣9

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值