c++斗地主实现

asyuae 2012-05-16 11:41:40
最近用 C ++实现一个斗地主的程序,但是总感觉自己的关于牌之间大小比较部分做的很烂(比如 双王 最大,三K带一大于三Q带一......),想在这里寻求大家的帮助,看看有没有什么好的算法

我是用类中设计一个类,表示一次出出去的牌,通过这几张牌的张数然后进一步遍历判断牌的类型,然后比较,不知道又没有好的方法
...全文
533 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
asyuae 2012-05-17
  • 打赏
  • 举报
回复
还想追加问一句:
第三种做法:

定义一个拥有54个元素的一维数,依次赋值为1------53, 随机54次,每次随机出一个数字,和第i个位置的数字交换,这样就比较不错了

[html] view plaincopy
int CardValueArray[54];
for(int i=0;i<54;i++)
{
CardValueArray[i]=i;
}
for (int i=0;i<54;i++)
{
swap( CardValueArray[i], CardValueArray[(rand()%54)]);
}
比如说,先随机出一个位置,和第一个数字交换,然后随机出一个位置,和第二个数字交换 打个比方,先随机出10,然后第十个数字,和第一个数字交换 然后随机出一个12,第12个数字,和第2个数字交换 然后随机一个数字和第三个交换.

关于这段代码为什么结果一定是随机的
asyuae 2012-05-17
  • 打赏
  • 举报
回复
写得好棒~~膜拜
网址在这里,大家可以去看
http://blog.csdn.net/wojiushi3344/article/details/7522245
q2920 2012-05-16
  • 打赏
  • 举报
回复
在论坛首页有个C++都地主的算法 你去看看
分析选牌牌型 先分析选牌是否为王炸,如不是则进行第二步; 找出选牌中相同权值的最大数量; 根据最大数量判断是否为相应的有效牌型。 分析手牌并拆分成有效牌型 判断牌型集合是否为空,不为空就不需要分析直接返回,否则进行第二步; 由当前玩家手牌(0-53格式)生成权值牌集合(3-17格式); 先拆分出权值牌集合中的基本牌型,分析的顺序为:王炸 → 炸弹 → 单顺 → 双顺 → 三顺、三条 → 一对 → 单张; 然后又基本牌型尝试组合成更复杂的牌型:三带一、四带二、飞机等。 出牌/跟牌分析 是否需要重新分析手牌,分析完成后进行第2步; 直接出牌(最后出牌方为自己); 如手牌数为2,则先出王炸、炸弹、数量最多、权值最大的牌; 如下家为我方,其手牌数为一,则出最小单牌;如下家为敌方,其手牌数为一,尽量不出单牌,或出最大单牌; 其他正常出牌顺序为:单牌(A以上的牌尽量不直接出)→对子→双顺→单顺→三条、三带一、飞机 跟友方牌(最后出牌方为我方) 手牌把数≤2,应出对应牌或炸弹,否则过牌 上家为地主且未跟牌,过牌 有对应牌,且权值小于14,则跟,炸弹不跟; 跟敌方牌(最后出牌方为敌方) 有对应牌就跟, 没有就拆, 再着用炸弹,否则就过牌

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧