欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

斗地主发牌Java课程设计

程序员文章站 2022-04-27 10:37:04
课程设计斗地主发牌运行效果斗地主发牌Java课程设计Player类public class Player { // 玩家姓名 private String name1; private String name2; private String name3; //玩家积分 private int grade; // 玩家类型:农民/地主 private String type1="农民"; private String type...

斗地主发牌

Java课程设计
斗地主发牌Java课程设计

Player类

public class Player {
    // 玩家姓名
    private String name1;
    private String name2;
    private String name3;
    //玩家积分
    private int grade;
    // 玩家类型:农民/地主
    private String type1="农民";
    private String type2="农民";
    private String type3="农民";

    public Player() { //无参构造方法
    }

    public Player(String name1, String name2, String name3) { //输入姓名的有参构造方法
        this.name1 = name1;
        this.name2 = name2;
        this.name3 = name3;
    }

    //get/set方法
    public String getName1() {
        return name1;
    }

    public void setName1(String name1) {
        this.name1 = name1;
    }

    public String getName2() {
        return name2;
    }

    public void setName2(String name2) {
        this.name2 = name2;
    }

    public String getName3() {
        return name3;
    }

    public void setName3(String name3) {
        this.name3 = name3;
    }

    public int getGrade() {
        return grade;
    }

    public void setGrade(int grade) {
        this.grade = grade;
    }

    public String getType1() {
        return type1;
    }

    public void setType1(String type1) {
        this.type1 = type1;
    }

    public String getType2() {
        return type2;
    }

    public void setType2(String type2) {
        this.type2 = type2;
    }

    public String getType3() {
        return type3;
    }

    public void setType3(String type3) {
        this.type3 = type3;
    }
}

Landlords类

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Landlords {
    public static void main(String[] args) {
        prin(); //调用选择页面方法
        Scanner sc = new Scanner(System.in);
        Player p = null;
        while (true) {
            System.out.println("请选择:");
            int i = sc.nextInt();
            if (i == 1) {
                 p = getplay(); //调用输入玩家姓名方法,并返回Player对象
                System.out.println("玩家已经准备完毕,请发牌!");
            } else if (i == 2) {
                fapoker(p); //调用 随机发牌方法
            } else if (i == 0) {
                System.exit(0); //结束程序
            }
        }
    }

    public static void fapoker(Player p) { // 随机发牌方法
        //创建一个集合来存牌
        ArrayList<String> Pokers = new ArrayList<>();
        //创建一个集合用来存储索引
        ArrayList<Integer> index = new ArrayList<>();
        String[] colors = {"♠","♥","♦","♣"};
        String[] numbers = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};

        int indexs=0;
        Pokers.add("大王");
        index.add(indexs); //存储到索引集合
        indexs++; //1
        Pokers.add("小王");
        index.add(indexs);
        indexs++; //2
        for (String number : numbers) {
            for (String color : colors) {
                Pokers.add(number+color); // 将组合好的牌存储
                index.add(indexs); //将索引存储
                indexs++;
            }
        }
        //洗牌
        //调用Collections工具类中的shuffle方法打乱索引
      Collections.shuffle(index);

        /*创建四个集合,三个用来存储玩家的牌,一个用来存储底牌*/
        ArrayList<Integer> name1 = new ArrayList<>();
        ArrayList<Integer> name2 = new ArrayList<>();
        ArrayList<Integer> name3 = new ArrayList<>();
        ArrayList<Integer> Dipai = new ArrayList<>();
//        /*随机抽一张明牌,不包括3张底牌*/
        double mp = (int) (Math.random() * 51+3); //随机生成 [3~54)
        for (int i = 0; i < index.size(); i++) {
            if (i <=2) { //底牌
                Dipai.add(index.get(i));
            } else if (i % 3 == 0) { //分牌给玩家
                name1.add(index.get(i));
                if (i == mp) { //比较明牌与玩家牌,相同则为地主,给该玩家三张底牌
                    getdipai(name1,Dipai);
                    p.setType1("地主");
                }
            } else if (i % 3 == 1) {
                name2.add(index.get(i));
                if (i == mp) { //
                    getdipai(name2, Dipai);
                    p.setType2("地主");
                }
            } else if (i % 3 == 2) {
                name3.add(index.get(i));
                if (i == mp) { //
                    getdipai(name3, Dipai);
                    p.setType3("地主");
                }
            }
        }
        //排序每个玩家的牌的索引
        Collections.sort(name1);
        Collections.sort(name2);
        Collections.sort(name3);

        //调用方法看牌
        lookPokers(p.getName1(), p.getType1(), name1,Pokers);
        lookPokers(p.getName2(), p.getType2(), name2,Pokers);
        lookPokers(p.getName3(), p.getType3(), name3,Pokers);
    }

    public static void lookPokers(String name, String type, ArrayList<Integer> index,ArrayList<String> poker) { //看牌方法
        System.out.println(type + "--" + name + "的牌是:");
        for (Integer i : index) {
            System.out.print(poker.get(i)+" ");
        }
        System.out.println();
    }

    public static void prin() { //选择页面框的方法
        System.out.println("***************************");
        System.out.println("*******   斗地主    ********");
        System.out.println("*******1、玩家进场 *********");
        System.out.println("*******2、随机发牌 *********");
        System.out.println("*******0、退出游戏 *********");
        System.out.println("***************************");
    }

    public static void getdipai(ArrayList<Integer> paly, ArrayList<Integer> list) { //遍历底牌集合 将底牌给地主的方法
        for (int s : list) {
            paly.add(s);
        }
    }

    public static Player getplay() { //输入玩家姓名的方法
        Scanner sc = new Scanner(System.in);
        System.out.println("输入第1个玩家:");
        String name1 = sc.next();
        System.out.println("输入第2个玩家:");
        String name2 = sc.next();
        System.out.println("输入第3个玩家:");
        String name3 = sc.next();

        Player player = new Player(name1, name2, name3);
        return player;
    }
}

运行效果

斗地主发牌Java课程设计

本文地址:https://blog.csdn.net/qq_45652428/article/details/111830125

相关标签: Java基础 java