JAVA-扑克游戏完整版

一、目的

  • 学习单例设计模式
  • 利用Java完成扑克游戏的Demo

二、技术及其实现

1.牌的花色及大小管理
public class PokerType {
    public static final PokerType SPADES=new PokerType("♠",4);
    public static final PokerType HEART=new PokerType("♥",3);
    public static final PokerType CLUBS=new PokerType("♣",2);
    public static final PokerType DIAMONDS=new PokerType("♦",1);

    private String pic;
    private int id;

    public PokerType(){}

    //提供一个自定义构造方法 默认的构造方法就被屏蔽了
    public PokerType(String pic,int id){
        this.pic=pic;
        this.id=id;
    }
    public String getPic() {
        return pic;
    }
    public void setPic(String pic) {
        this.pic = pic;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
}

2.牌的相关操作管理
public class PokerManager {
    //保存一副牌
    private ArrayList pokers=new ArrayList<>();

    //创建静态的变量
    public static final PokerManager manager=new PokerManager();
    //私有化构造方法
    private PokerManager(){

    }
    //定义一个方法生成一副牌
    public void deal(){
        //遍历整个点数的数组
        for (int i=0;iplayers){
        for(int i=0;i
3.玩家信息
public class Player {
    public String name;
    public int id;
    public int money;
    public Poker poker;
    public Player(){

    }
    public Player(String name,int id,int money){
        this.name=name;
        this.id=id;
        this.money=money;
    }

    @Override
    public String toString() {
        //1号玩家 张家辉 筹码1000
        String pkString = "";
        if (poker!=null){
            pkString = ""+poker.getDot()+poker.getType().getPic();
        }
        return id+"号玩家: "+name+" 筹码"+money+" "+getPokerString();
    }

    public String getPokerString(){
        String pkString = "";
        if (poker!=null){
            pkString = ""+poker.getDot()+poker.getType().getPic();
        }
        return pkString;
    }
    //下注
    public int bet(int count){
        //判断自己的金币是否大于下注金额
        if (money>=count){
            money-=count;
            return count;
        }
        else{
            return -1;
        }
    }
}
4.玩家信息操作管理
public class PlayerManager {
    //记录当前下注的玩家编号
    public int currentPlayerIndex=0;

    //保存所有的玩家
    public ArrayListplayers=new ArrayList<>();

    public static final PlayerManager manager=new PlayerManager();
    private PlayerManager(){

    }
    //初始化玩家
    public void initPlayer(int count){
        for (int i=0;i
5.游戏中心
public class GameCenter {
    //记录这局的筹码
    private int totaMoney;

    //开始游戏
    public void start(){

        System.out.println("游戏开始,请打底:");
        //扣底注
        PlayerManager.manager.betAll(Constant.base);

        PlayerManager.manager.show();

        //发牌
        PokerManager.manager.dealCards(PlayerManager.manager.);

        PlayerManager.manager.show();

        while (true){
            //获取当前玩家信息
            Player player=PlayerManager.manager.currentPlayer();
            //提示选择操作
            System.out.println("请"+player.id+"号玩家选择操作");
            Utils.showText(true,true,new String[]{"看牌","弃牌","下注"});
            int choice=Utils.getInput();
          }
    }
}

三、心得体会

不得不说,对于我来说今天的Demo实在是太复杂了,刚开始还行到后来边听边写也才勉强跟上。我觉得要我自己单独写这个Demo还差得有点远,这样说来我还是慢慢看视频去吧。

你可能感兴趣的:(JAVA-扑克游戏完整版)