斗地主出牌算法

fang_jeffrey 2006-11-07 05:06:28
最近想用C写一个单机版的斗地主游戏,大部分工作都做完了,就差出牌的实现,算法越想越是复杂,头晕.不知道怎么开始写这个算法,有没有高手能交流指教一下.十分感激
...全文
1324 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
CW_Wei 2006-11-13
  • 打赏
  • 举报
回复
本人有该算法

要的话联系qq: 269221745
fang_jeffrey 2006-11-10
  • 打赏
  • 举报
回复
难道没有行家来交流一下吗??我看网上也有不少人自己做了单机斗地主,这里的程序员
应该也有这方面的行家吧!!
帮忙顶一下.
fang_jeffrey 2006-11-08
  • 打赏
  • 举报
回复
感谢ych1(被迫学编程) 的思路给了我一些启发.但是很多情况下不能只考虑出牌后剩下牌的多少.
例如:手上有13张牌44,55,6,6,7,7,8,9,9,9,10,11
虽然打出4,5,6,7,8,9,10,11会剩下最少的张数,但是剩下的牌都很小,明显不行.
请问还有哪位能提一些建议,或是有其它算法的吗??
fang_jeffrey 2006-11-08
  • 打赏
  • 举报
回复
这样好像会存在不少问题:
1.做为地主,还是做为地主上家,或是下家,打法是不一样的.
2.像你这么说的话似乎组合太多了,就17张牌而论,光是考虑单双组合都太多.
3.这样的打法不存在拆牌分析的技能.
4.不能对现在的局势进行判断,光是对手上的牌进行分析似乎是个弱智能.
我原来想用加权算法的.
有四个规则:
1.就是每种牌型加一个权,然后乘以每种牌型被剩下的牌压住的机率来算出
总权,牌的总权是较大的出牌顺序为考虑的出法.
2.做为地主一家,应该以手上哪一种牌型弱就先发哪种牌,到了只剩一两个弱牌的时候以强牌先出
(问题在于如何分发权,用来判断手上的牌哪种牌型是弱是强,而且还有三带一带二,飞机带翅膀这些干扰牌型)
3.不做地主.地主下家应该主攻,地主上家主守,但是要是分析局势知道自己的牌为强牌的话也要以攻为主.在守地主的时候,地主上家什么时候要拆牌吃,要根据已出的牌来判断地主不要什么牌,
友家要什么牌不知道怎么判断.(不赞成电脑一直知道其它玩家的牌来出牌).
4.只剩较少牌的打法应该有一定的优先权.(加多少权好呢?)
综合以上的几点想法,问题主要在于如何加权,使得各种规则组合起来.
ych1 2006-11-07
  • 打赏
  • 举报
回复
没做过,说点自己的看法。首先出完牌的一家为赢家。那么可以将手中的牌按不同出牌组合整理,得到一个优先级别的列表。比如,有 1,2,2,3,4,5,5张牌,按牌型可以分为不同的出牌顺序,A,先出12345,在出2,5。B,先出,22,再55,再1,3。。。
那么根据牌型的组合,就能够得到不同的出牌顺序,顺子是最快的,一张一张散牌是最慢的。因为对手的牌不可遇见,所以当对手出牌后,可以先判断能否大过他,如果不能,则PASS,如果可以大过他,那么判断当前的出完牌的速度和大他之后出完牌的速度,如果前者大于后者,则可以考虑PASS。
我觉得就跟平时人们玩一样,总是判断如何能够最快出完,电脑的化就是模拟很多不同的组合从中找出最好的方案。。。
fang_jeffrey 2006-11-07
  • 打赏
  • 举报
回复
mlxsj1001 :大哥,我给分你给钱,那谁还谁还有兴趣回答我的问题啊!~
别抢眼球啊!~ 我正着急呢~想了好久也没什么头绪.继续我的问题:
本人正在用C写斗地主程序,不知道出牌算法也就是AI部分怎么写,有高手能给个思路的吗>?
本人万分感激.
seething 2006-11-07
  • 打赏
  • 举报
回复
支持,出回来了帮你test!
嘎嘎!
mlxsj1001 2006-11-07
  • 打赏
  • 举报
回复
哪位朋友可以做棋牌游戏大厅可以加我,我给钱的,QQ35219201
说明你是干什么的

8,304

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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