如何在c++中识别扑克手牌
How to identy a Poker hand in c++
我有一项任务,我需要识别德州扑克的一手牌
赋值如下: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)。
我怀疑你的教授并不真正理解其中所涉及的内容,并且会很高兴看到像他自己那样半成品的解决方案,只是为了看到你可以生成类似于实际工作的代码。
- 提升 ASIO 无法识别计时器对象
- 从udp接收帧对于人脸识别来说太慢
- 模板类无法识别友元运算符
- std::visit无法识别类型
- 如何拆分文件中.txt字母并使用c ++使用数组进行扑克?
- 无法识别模板功能
- 我有两个类需要在同一 cpp 文件中相互引用,但第一个类无法识别第二个类类型的对象
- 如何在LLVM中dyn_cast以识别StoreInst?
- 从不同的附加依赖项中识别等同命名的函数
- C++出现控制台错误.我无法识别源代码的问题
- VSCode IntelliSense无法识别SDL框架的SDL_image扩展库
- Qt:"Q3DScatter"即使包含在内也无法识别
- 使用指针的类识别
- 如何静态识别动态堆分配?
- 为什么C++无法识别我的对象实例化?
- C++ 无法识别创建进程'telnet'
- 识别 2D 矢量C++中的位置
- 如何识别项目是 QT 中的文件还是文件夹
- ESP32 无法识别任何设备已连接到其接入点
- 如何在c++中识别扑克手牌