德州扑克C++实现

游戏介绍

  • 游戏介绍链接
  • 简单介绍:
    从上到下分别是:同花顺、四条、三带二、同花、顺子、三带一、两对、一对、杂牌。A可以当1和14。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

编程实现

程序分析
PockerGame.hpp:实现具体游戏流程,对洗牌、发牌、码牌、判断输赢等操作进行控制。

Card.hpp:实现对卡片花色、卡片数值的定义和打印等操作。需要注意,在windows 下需要用chcp 65001切换到UTF-8的CMD输出格式。

Deck.hpp:实现了洗牌算法和发牌操作。

Player.hpp:实现玩家类,记录玩家的手牌、判断玩家的最好手牌,玩家资金、信息管理等操作。

PokerHand.hpp:持有五张牌,实现对这五张排的大小等级的判断,其中需要注意A的两种情况。
编程实现
PokerGame.cpp

#include "Player.hpp"
#include "Deck.hpp"

class PokerGame{
public:
    PokerGame(int playerNumber) : ante(2){
        //init player
        for(int i = 0;i < playerNumber;i++){
            Player player(i+1);
            players.push_back(player);
        }
    }

    //starting game
    void start(){
        //clear buffer
        board.clear();
        for(auto &player:players){
            player.clearHandCard();
        }
        deck.shuffle();

        //get ante and deal
        double allBonus = 0;
        for(auto &player : players){
            //bet down
            player.loss(ante);
            allBonus += ante;
            //dealing
            player.putCard(deck.getCard());
            player.putCard(deck.getCard());
        }
        std::cout<<"Community Cards :";
        for(int i = 0; i < 5; i++){
            board.push_back(deck.getCard());
            std::cout<<board.back().toString()<<"   ";
        }
        std::cout<<std::endl;
        std::cout<<"+++++++++++++++++++++++++++++++++++"<<std::endl;

        //comparing pokerHands
        std::vector<PokerHand> allBestPokerHand;
        for(auto &player : players){
            //get all best hand
            allBestPokerHand.push_back(player.getBestPokerHand(board));

            //print player message
            player.printPlayerInfo();
            player.printHandCards();
            std::cout<<std::endl;

            //print best hand cards
            std::cout<<"    Best hand:";
            allBestPokerHand.back().printMesg();
   
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值