斗地主牌组的创建和发牌

Java 斗地主 - 洗牌和排列

简述
生成一副扑克牌,然后洗牌,将洗牌进行排序后的结果输出

洗牌思路
扑克牌基本情况:一副牌有54张:大小王,四种类型:红桃(Hearts)、方块(Diamonds)、梅花(Clubs)、黑桃(Spades),每种类型有13张牌(A、2、3、4、5、6、7、8、9、10、J、Q、K)。
1、把一张牌看作一个对象Card,该对象有类型属性type、大小属性size,即定义一个Card类,该类包含type和size属性
2、初始化扑克牌的类型colors[] = {“♠”, “♥”, “♦”, “♣”}
初始化牌的大小numbers[] = {“A”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“J”,“Q”,“K”}
3、用一个List接收54张扑克牌
4、类型和大小进行双重循环生成扑克牌
5、打乱扑克牌(洗牌):集合类中有shuffle()方法

代码块

import java.sql.ClientInfoStatus;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public static void  main(String[] args){
        List<String> pokes = new ArrayList<>();
        List<String> colors = new ArrayList<>();
        List<String> numbers = new ArrayList<>();

        colors.add("♥");
        colors.add("♠");
        colors.add("♦");
        colors.add("♣");
        numbers.add("A");

        for(int i=2;i<=10;i++){
            numbers.add(i+"");
        }
        numbers.add("J");
        numbers.add("Q");
        numbers.add("K");
        for(String c:colors){
            for(String n:numbers){
                String pai=c+n;
                pokes.add(pai);
            }
        }
        pokes.add("大");
        pokes.add("小");

        Collections.shuffle(pokes);

        ArrayList<String> x = new ArrayList<>();
        ArrayList<String> y = new ArrayList<>();
        ArrayList<String> z = new ArrayList<>();
        ArrayList<String> a = new ArrayList<>();
        for(int i=0;i<pokes.size();i++){
            String pai = pokes.get(i);
            if(i>=51){
                a.add(pai);
            }
            else{
                if(i%3==0){
                    x.add(pai);
                }
                else if (i%3==1){
                    y.add(pai);
                }
                else{
                    z.add(pai);
                }
            }
        }

排列思路
1、按照手机游戏上的排序顺序,依次为大小王,2,A,K,Q,J,10,9,8,7,6,5,4,3。
2、因牌中带有字母和图案,不易直接进行大小比较和排列,我们采用将不规则卡片(大小王,A,K,Q,J)改成数字进行比较排列。
3、交换函数的编写。

代码块

private static<XXX> void JH(List<XXX> list, int a,int b){
        XXX xxx=list.get(a);
        list.set(a,list.get(b));
        list.set(b,xxx);
    }

    public static ArrayList<String> LiPai(ArrayList<String> list){
        ArrayList<Integer> sz=new ArrayList<>();
        int x=-1;
        for(int i=0;i<list.size();i++){
            if (list.get(i).equals("大")){
                x=100;
            }
            else if(list.get(i).equals("小")){
                x=99;
            }
            else{
                if(list.get(i).substring(1).equals("2")){
                    x=90;
                }
                else if(list.get(i).substring(1).equals("A")){
                    x=85;
                }
                else if(list.get(i).substring(1).equals("K")){
                    x=80;
                }
                else if(list.get(i).substring(1).equals("Q")){
                    x=75;
                }
                else if(list.get(i).substring(1).equals("J")){
                    x=70;
                }
                else{
                    x=Integer.parseInt( list.get(i).substring(1))*4;
                }

                if(list.get(i).substring(0,1).equals("♠")){
                    x+=4;
                }
                else if(list.get(i).substring(0,1).equals("s")){
                    x+=3;
                }
                else if(list.get(i).substring(0,1).equals("♦")){
                    x+=2;
                }
                else if(list.get(i).substring(0,1).equals("♥")){
                    x+=1;
                }
            }
            sz.add(x);
        }


        for(int i=list.size();i>1;i--){
            for(int j=0;j<i-1;j++){
                if(sz.get(j)<sz.get(j+1)){
                    JH(sz,j,j+1);
                    JH(list,j,j+1);
                }
            }
        }
        return list;
    }

#其中x只要满足大小排列的即可

完整代码

import java.sql.ClientInfoStatus;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class DouDiZhu {
    private static<XXX> void JH(List<XXX> list, int a,int b){
        XXX xxx=list.get(a);
        list.set(a,list.get(b));
        list.set(b,xxx);
    }

    public static ArrayList<String> LiPai(ArrayList<String> list){
        ArrayList<Integer> sz=new ArrayList<>();
        int x=-1;
        for(int i=0;i<list.size();i++){
            if (list.get(i).equals("大")){
                x=100;
            }
            else if(list.get(i).equals("小")){
                x=99;
            }
            else{
                if(list.get(i).substring(1).equals("2")){
                    x=90;
                }
                else if(list.get(i).substring(1).equals("A")){
                    x=85;
                }
                else if(list.get(i).substring(1).equals("K")){
                    x=80;
                }
                else if(list.get(i).substring(1).equals("Q")){
                    x=75;
                }
                else if(list.get(i).substring(1).equals("J")){
                    x=70;
                }
                else{
                    x=Integer.parseInt( list.get(i).substring(1))*4;
                }

                if(list.get(i).substring(0,1).equals("♠")){
                    x+=4;
                }
                else if(list.get(i).substring(0,1).equals("s")){
                    x+=3;
                }
                else if(list.get(i).substring(0,1).equals("♦")){
                    x+=2;
                }
                else if(list.get(i).substring(0,1).equals("♥")){
                    x+=1;
                }
            }
            sz.add(x);
        }


        for(int i=list.size();i>1;i--){
            for(int j=0;j<i-1;j++){
                if(sz.get(j)<sz.get(j+1)){
                    JH(sz,j,j+1);
                    JH(list,j,j+1);
                }
            }
        }
        return list;
    }

    public static void  main(String[] args){
        List<String> pokes = new ArrayList<>();
        List<String> colors = new ArrayList<>();
        List<String> numbers = new ArrayList<>();

        colors.add("♥");
        colors.add("♠");
        colors.add("♦");
        colors.add("♣");
        numbers.add("A");

        for(int i=2;i<=10;i++){
            numbers.add(i+"");
        }
        numbers.add("J");
        numbers.add("Q");
        numbers.add("K");
        for(String c:colors){
            for(String n:numbers){
                String pai=c+n;
                pokes.add(pai);
            }
        }
        pokes.add("大");
        pokes.add("小");
//        System.out.println(pokes);

        Collections.shuffle(pokes);
//        System.out.println(pokes);

        ArrayList<String> x = new ArrayList<>();
        ArrayList<String> y = new ArrayList<>();
        ArrayList<String> z = new ArrayList<>();
        ArrayList<String> a = new ArrayList<>();
        for(int i=0;i<pokes.size();i++){
            String pai = pokes.get(i);
            if(i>=51){
                a.add(pai);
            }
            else{
                if(i%3==0){
                    x.add(pai);
                }
                else if (i%3==1){
                    y.add(pai);
                }
                else{
                    z.add(pai);
                }
            }
        }

        x=LiPai(x);
        y=LiPai(y);
        z=LiPai(z);
        a=LiPai(a);

        System.out.println(x);
        System.out.println(y);
        System.out.println(z);
        System.out.println(a);
    }
}

运行结果
在这里插入图片描述

你可能感兴趣的:(斗地主牌组的创建和发牌)