JAVA控制台扑克牌游戏,洗牌,发牌,比较大小

    此游戏是一个简单的并且很基础的java控制台程序。这个扑克牌游戏主要的游戏过程是:首先创建一副扑克牌,创建好了后要进行洗牌,牌洗好了,需要玩家来玩,接下来就创建玩家。有洗好的牌,也有玩家了,那么就开始发牌,发完牌后,比较玩家中手牌的大小,大的那一位获胜。下面是代码:

    首先创建一个扑克牌类,扑克牌主要有两个属性,一个是点数,一个是花色。给点数和花色生成getter和setter。然后重载构造函数,一个无参的,一个有参的。在最后还重写了equals方法,判断两个扑克牌是否相等。

public class Poker {
    private String point;
    private String color;

    public Poker(){

    }
    public Poker(String point,String color){
        this.point = point;
        this.color = color;
    }
    public String getPoint() {
        return point;
    }

    public void setPoint(String point) {
        this.point = point;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Poker poker = (Poker) o;
        return Objects.equals(point, poker.point) &&
                Objects.equals(color, poker.color);
    }
}

    接下来我们创建玩家类,玩家拥有三个属性,一个是id,一个name,另一个是手牌。在这个游戏中,我们给每名玩家会发两张牌,所以用List来存放手牌。同样是创建无参构造方法和有参构造方法。然后就是这三个属性的getter和setter。

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

public class Player {
    private String id;
    private String name;
    private List pokers;
    public Player(){

    }
    public Player(String id,String name){
        this.id = id;
        this.name = name;
        this.pokers = new ArrayList();
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List getPokers() {
        return pokers;
    }

    public void setPokers(List pokers) {
        this.pokers = pokers;
    }
}

    有了玩家类和扑克类,剩下的就是游戏的主类了。主要的方法有三个,一个是创建玩家createPlayer,一个是洗牌shuffle,另一个是开始游戏的方法play。这个类需要实现Comparator接口,用于比较引用对象的大小。

import java.util.*;

public class Main implements Comparator {

    private List playerList;            //玩家列表
    private List pokerList ;             //原始扑克牌列表
    private List pokerListAfterShuffle;  //洗牌后的扑克牌列表
    private Scanner console;                    //输入控制
    private String id;                          //用户输入的id
    private String name;                        //用户输入的name
    private Poker getPoker;                     //存放发的那张牌

    public static void main(String[] args) {
       Main game = new Main();
       game.createPlayer();
       game.shuffle();
       game.play();
    }

    /**
     * 在方法的初始化中,给成员变量初始化
     */
    public Main(){
        playerList = new ArrayList();
        pokerList = new ArrayList();
        pokerListAfterShuffle = new ArrayList();
        console = new Scanner(System.in);
        //创建扑克牌,有序的
        String[] points = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
        String[] colors = {"方块","梅花","红桃","黑桃"};        //同花色的扑克牌大小遵循“黑红梅方”的规定
        for (String point : points){
            for (String color : colors){
                Poker poker = new Poker(point,color);
                pokerList.add(poker);
            }
        }
    }

    /**
     * 创建玩家,一共两个玩家
     */
    public void createPlayer(){
        System.out.println("----------创建玩家----------");
        for (int i = 1; i<3;i++){
            System.out.println("请输入第" + i + "位玩家信息:");
            System.out.println("请输入玩家id:");
            id = console.next();
            System.out.println("请输入玩家name:");
            name = console.next();
            playerList.add(new Player(id,name));
        }
        for (Player player : playerList){
            System.out.println("欢迎玩家:" +  player.getName());
        }
    }

    /**
     * 因为实现了接口Comparator,所以需要重写compare方法,
     * 在后面给扑克牌排序的时候,会调用
     * @param o1
     * @param o2
     * @return
     */
    @Override
    public int compare(Poker o1, Poker o2) {
        if (pokerList.indexOf(o1)>pokerList.indexOf(o2)){
            return 1;
        }
        return -1;
    }

    /**
     * 洗牌
     * 洗牌的方式是:将生成的有序的扑克牌,利用随机数,一张一张的抽取出来
     * 放在pokerListAfterShuffle列表中
     */
    public void shuffle(){
        //创建一个随机数
        Random random = new Random();       
        Poker poker = new Poker();
        System.out.println("----------开始洗牌----------");
        for (int i = 0;ipokerList.indexOf(playerList.get(1)
                .getPokers().get(1))){
            System.out.println("玩家" + playerList.get(0).getName() + "获胜");
        }else
            System.out.println("玩家" + playerList.get(1).getName() + "获胜");
        System.out.println("----------游戏结束----------");
    }
}

    下面是游戏的运行结果

JAVA控制台扑克牌游戏,洗牌,发牌,比较大小_第1张图片

JAVA控制台扑克牌游戏,洗牌,发牌,比较大小_第2张图片

    以上就是全部内容,如果发现问题,请指出,谢谢。

你可能感兴趣的:(java,扑克牌游戏,比较大小,控制台,java)