【JAVA】斗地主发牌有序化简易实现题

【JAVA】斗地主发牌有序化简易实现题

前言

Java项目实习第一次课后作业:实现斗地主的生成卡牌洗牌、发牌、理牌。

题目

一副牌 54 张:花色[“红桃”,“黑桃”,“方块”,“草花”];
序号[“A”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“J”,“Q”,“K”,“小鬼”,“大鬼”];
三名玩家:一人 17 张,留 3 张做底牌;
底牌:在确定地主之前玩家不能看底牌。

请用Java进行编程,实现生成卡牌、洗牌、发牌、理牌。

main函数

    public static void main(String[] args) {
        //1.生成卡牌
        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("生成卡牌:");
        System.out.println(pokes);
        System.out.println();

        //2.洗牌
        System.out.println("洗牌:");
        Collections.shuffle(pokes);
        System.out.println(pokes);
        System.out.println();

        //3.发牌,留3张底牌
        ArrayList<String> people_1 = new ArrayList<>();
        ArrayList<String> people_2 = new ArrayList<>();
        ArrayList<String> people_3 = new ArrayList<>();
        ArrayList<String> dipai = new ArrayList<>();
        for (int i = 0; i < pokes.size(); i++) {
            String pai = pokes.get(i);
            if (i >= 51) {
                dipai.add(pai);
            } else {
                if (i % 3 == 0) people_1.add(pai);
                else if (i % 3 == 1) people_2.add(pai);
                else people_3.add(pai);
            }
        }
        System.out.println("发牌:");
        System.out.println(people_1);
        System.out.println(people_2);
        System.out.println(people_3);
        System.out.println(dipai);
        System.out.println();

        //4.理牌
        System.out.println("理牌:");
        arrangecards(people_1);
        arrangecards(people_2);
        arrangecards(people_3);
        arrangecards(dipai);
    }

纸牌有序化函数

    public static void arrangecards(ArrayList<String> list){
        ArrayList<String> arrange = new ArrayList<>();

        //将一些序号进行替换,方便排序
        for(int i=0;i<list.size();i++){
            if(list.get(i).substring(1,2).equals("J"))list.set(i,list.get(i).substring(0,1) + "11");
            else if(list.get(i).substring(1,2).equals("Q"))list.set(i,list.get(i).substring(0,1) + "12");
            else if(list.get(i).substring(1,2).equals("K"))list.set(i,list.get(i).substring(0,1) + "13");
            else if(list.get(i).substring(1,2).equals("A"))list.set(i,list.get(i).substring(0,1) + "14");
            else if(list.get(i).substring(1,2).equals("2"))list.set(i,list.get(i).substring(0,1) + "15");
        }

        //进行排序
        for(int i=3;i<=15;i++){
            for(int j=0;j<list.size();j++){
                if(list.get(j).substring(1,2).equals("1")){
                    if(list.get(j).substring(1,3).equals(String.valueOf(i))){
                        arrange.add(list.get(j));
                    }
                }else{
                    if(list.get(j).substring(1,2).equals(String.valueOf(i))){
                        arrange.add(list.get(j));
                    }
                }
            }
        }

        //直接将大小鬼放最后
        for(int j=0;j<list.size();j++){
            if(list.get(j).equals("大鬼") || list.get(j).equals("小鬼")){
                arrange.add(list.get(j));
            }
        }

        //将原本序号替换回来
        for(int i=0;i<arrange.size();i++) {
            if (arrange.get(i).substring(1, 2).equals("1")) {
                if (arrange.get(i).substring(1, 3).equals("11")) 
                	arrange.set(i, arrange.get(i).substring(0, 1) + "J");
                else if (arrange.get(i).substring(1, 3).equals("12"))
                    arrange.set(i, arrange.get(i).substring(0, 1) + "Q");
                else if (arrange.get(i).substring(1, 3).equals("13"))
                    arrange.set(i, arrange.get(i).substring(0, 1) + "K");
                else if (arrange.get(i).substring(1, 3).equals("14"))
                    arrange.set(i, arrange.get(i).substring(0, 1) + "A");
                else if (arrange.get(i).substring(1, 3).equals("15"))
                    arrange.set(i, arrange.get(i).substring(0, 1) + "2");
            }
        }

        //输出
        System.out.println(arrange);
    }

效果图

在这里插入图片描述

完整·程序段

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

public class DouDiZhu {
    public static void main(String[] args) {
        //1.生成卡牌
        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("生成卡牌:");
        System.out.println(pokes);
        System.out.println();

        //2.洗牌
        System.out.println("洗牌:");
        Collections.shuffle(pokes);
        System.out.println(pokes);
        System.out.println();

        //3.发牌,留3张底牌
        ArrayList<String> people_1 = new ArrayList<>();
        ArrayList<String> people_2 = new ArrayList<>();
        ArrayList<String> people_3 = new ArrayList<>();
        ArrayList<String> dipai = new ArrayList<>();
        for (int i = 0; i < pokes.size(); i++) {
            String pai = pokes.get(i);
            if (i >= 51) {
                dipai.add(pai);
            } else {
                if (i % 3 == 0) people_1.add(pai);
                else if (i % 3 == 1) people_2.add(pai);
                else people_3.add(pai);
            }
        }
        System.out.println("发牌:");
        System.out.println(people_1);
        System.out.println(people_2);
        System.out.println(people_3);
        System.out.println(dipai);
        System.out.println();

        //4.理牌
        System.out.println("理牌:");
        arrangecards(people_1);
        arrangecards(people_2);
        arrangecards(people_3);
        arrangecards(dipai);
    }

    public static void arrangecards(ArrayList<String> list){
        ArrayList<String> arrange = new ArrayList<>();

        //将一些序号进行替换,方便排序
        for(int i=0;i<list.size();i++){
            if(list.get(i).substring(1,2).equals("J"))list.set(i,list.get(i).substring(0,1) + "11");
            else if(list.get(i).substring(1,2).equals("Q"))list.set(i,list.get(i).substring(0,1) + "12");
            else if(list.get(i).substring(1,2).equals("K"))list.set(i,list.get(i).substring(0,1) + "13");
            else if(list.get(i).substring(1,2).equals("A"))list.set(i,list.get(i).substring(0,1) + "14");
            else if(list.get(i).substring(1,2).equals("2"))list.set(i,list.get(i).substring(0,1) + "15");
        }

        //进行排序
        for(int i=3;i<=15;i++){
            for(int j=0;j<list.size();j++){
                if(list.get(j).substring(1,2).equals("1")){
                    if(list.get(j).substring(1,3).equals(String.valueOf(i))){
                        arrange.add(list.get(j));
                    }
                }else{
                    if(list.get(j).substring(1,2).equals(String.valueOf(i))){
                        arrange.add(list.get(j));
                    }
                }
            }
        }

        //直接将大小鬼放最后
        for(int j=0;j<list.size();j++){
            if(list.get(j).equals("大鬼") || list.get(j).equals("小鬼")){
                arrange.add(list.get(j));
            }
        }

        //将原本序号替换回来
        for(int i=0;i<arrange.size();i++) {
            if (arrange.get(i).substring(1, 2).equals("1")) {
                if (arrange.get(i).substring(1, 3).equals("11")) 
                	arrange.set(i, arrange.get(i).substring(0, 1) + "J");
                else if (arrange.get(i).substring(1, 3).equals("12"))
                    arrange.set(i, arrange.get(i).substring(0, 1) + "Q");
                else if (arrange.get(i).substring(1, 3).equals("13"))
                    arrange.set(i, arrange.get(i).substring(0, 1) + "K");
                else if (arrange.get(i).substring(1, 3).equals("14"))
                    arrange.set(i, arrange.get(i).substring(0, 1) + "A");
                else if (arrange.get(i).substring(1, 3).equals("15"))
                    arrange.set(i, arrange.get(i).substring(0, 1) + "2");
            }
        }

        //输出
        System.out.println(arrange);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值