游戏介绍
- 游戏介绍链接
- 简单介绍:
从上到下分别是:同花顺、四条、三带二、同花、顺子、三带一、两对、一对、杂牌。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();