编辑: 阿拉蕾 2018-02-15

1 g i t clone https :// github . com/ zzy7896321 /holdem . g i t 评测系统需要Boost C++ Library,请自行下载编译. holdem/client 目录下提供了 Make?le 和Make?le-mingw.请Make?le 中的 AI 变量改 为AI 实现的文件名,比如 AI 实现在 example.cpp 中,需要把 AI 设置为 example. 在Linux 系统上,正常情况下

1 make 即可编译. 在Windows (MinGW) 系统上,需要先设置好 MinGW GCC 的环境变量,将Make?le- mingw 中BOOST_PATH 改为 boost 的根目录.另外,由于 MinGW 的一些 bugs,可能 需要对它提供的头文件进行修改,参见Link 1.

1 mingw32?make ?f Makefile?mingw 在Cygwin 上可能无法正常编译. 评测系统需要支持 C++11 的编译器,已知 g++ 4.8 或更高的版本可以使用.目前已在 以下环境中成功编译: ? Linux Mint

15 32bit, g++ 4.8.2 ? Linux Ubuntu 14.04 64bit, g++ 4.8.3 ? Windows

7 32bit, MinGW g++ 4.8.1 ? Windows

8 64bit, MinGW g++ 4.8.1 ? (to be tested) Mac OS 运行 client,其中 是server 的ip 地址,port 是端口

3 1 ./ c l i e n t example.cpp 是一个简单的 UI,各个阶段会提示用户输入决策,仅仅作为测试程序. 2.2 实现 AI 的接口 Player 类中的以下函数需要实现,若额外的存储空间,可在 Player.h 中自行加入所需 的成员变量. ? std::string Player::login_name();

返回你的 AI 的名字,将在与服务器建立连接时调用(在调用 init 之前) . ? void Player::login_name(std::string name);

服务器接受 name 作为你的 AI 的名字,这个名字可能与之前 login_name() 的不同. ? void Player::init();

初始化函数.init 将在确认与服务器连接成功,收到玩家列表之后被调用. ? void Player::destroy();

destroy 将在 Player 的析构函数中调用. ? decision_type Player::pre?op();

返回第一轮下注时 AI 的决定,可能在同一轮中被多次调用. ? decision_type Player::?op();

返回第二轮下注时 AI 的决定,可能在同一轮中被多次调用. ? decision_type Player::turn();

返回第三轮下注时 AI 的决定,可能在同一轮中被多次调用. ? decision_type Player::river();

返回第四轮下注时 AI 的决定,可能在同一轮中被多次调用. ? hand_type Player::showdown();

返回 AI 决定展示的

5 张牌,5 张牌应当在自己的

2 张手牌和

5 张公共牌中. ? void game_end();

一局比赛结束的时候调用,AI 可以进行赛后统计,以便提供之后比赛使用的数据. decision_type 定义为:

4 1 enum DECISION_VALUE { CHECK, FOLD, CALL, RAISE };

2 typedef std : : pair decision_type ;

其中,CHECK,FOLD 和CALL 作为决定时,第二个分量将被忽略.RAISE 作为决定时, 第二个分量表示在跟注基础上,还要加注的大小.比如场上本轮最大下注为 4,自己现在已 经下了 2, 那么 表示,跟注到

4 的基础上再加注 4,自己的下注将变为 8.可 以调用 make_decision 函数返回适当的决定.比如,

1 return make_decision (CHECK) ;

2 return make_decision (CALL) ;

3 return make_decision (FOLD) ;

4 return make_decision (RAISE, 4) ;

hand_type 和card_type 定义为:

1 typedef std : : pair card_type ;

2 typedef std : : array hand_type ;

其中 card_type 两个分量分别表示牌的大小(

2、

3、

4、

5、

6、

7、

8、

9、T、J、Q、K、A) 和牌的种类(S、H、D、C) .hand_type 是一个大小为

5 的数组, 存放

5 张要展示的手牌. 其他的定义详见 common.h. 比赛信息可以通过 query 成员的成员函数查询,目前提供以下查询函数: 函数原型 说明 整个游戏的信息,从init 开始可以调用 const std::string& name_of(int player);

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题