如何在c++中识别扑克手牌

How to identy a Poker hand in c++

本文关键字:扑克 识别 c++      更新时间:2023-10-16

我有一项任务,我需要识别德州扑克的一手牌

赋值如下:http://www.scribd.com/doc/142850594/proj1

下面是我的代码:http://pastebin.com/Ts387iDw

我不太明白的是如何让程序从文件中读取手,或者我应该如何让它排序并识别手。

如果有人告诉我从头开始设计一个这样的程序,没有任何指导原则,我会做的是给所有52张牌分配一个唯一的ID,然后定义一种类型的手牌,比如皇家同花顺,并使用If语句来查看ID是否与定义的手牌类型匹配。然而,我只是有一种直觉,这比我的教授在作业中展示的方式效率要低得多(毕竟他是教授)。任何帮助都很感激,谢谢!

那么,你有两个问题:
1. 读取文件
中的指针2. 识别手的等级

对于第一个问题,您需要:
1. 逐行读取文件
2. 解析字符串。你可以注意到,每张牌都有相同的模式:它是一个字母加1或2个数字,后面跟着其他牌。在这种情况下,您可以根据数字和字母之间的切换手动分割字符串。

对于第二个问题,没有通用的方法。在大多数情况下,您需要手动检查每个可能的排名。

从文件中读取手应该不难,但是识别手的方法比你的作业所暗示的要多得多,而且你的教授自己的示例函数是错误的。扑克手牌不关心牌的顺序,所以他识别皇家同花顺(带R:-)的功能在120次中会失败119次。您可以通过先对手进行排序来部分地解决这个问题,但是您需要对轮子进行特殊情况代码(A2345直)。此外,确定手牌的"类型"只是决定哪只手赢的第一步。最后,所有这些都只适用于标准的5张牌扑克,而不适用于德州扑克,在德州扑克中你需要打出7张牌中最好的5张。谷歌"扑克手评估器",你会发现比你想象的更多的信息。一个开始学习c++的好地方是Github上的Pokerstove(或者我自己的onejoker)。

我怀疑你的教授并不真正理解其中所涉及的内容,并且会很高兴看到像他自己那样半成品的解决方案,只是为了看到你可以生成类似于实际工作的代码。