单机斗地主(单机版)两张2两张11一张10一张7一张3对方三张1一张10一张4两张3怎么打赢对方

途游斗地主是一款超级受欢迎的休闲娱乐类手机游戏!现游戏玩家已经破亿!途游斗地主游戏为玩家提供了时下最流行的游戏玩法,操作简单,画面简约大方,老少皆宜!游戏还会每天安排各项比赛,赢得比赛的有可能会获得微信红包哟!感兴趣的小伙伴们欢迎下载体验哦!

火箭、飞机、炸弹横飞 随时翻盘

玩牌最痛苦的事情就是牌太烂,被压制?玩《途游斗地主》没有差牌,增加了得到炸弹牌的几率,让炸弹逆袭的机会更多。除此之外,每局最高翻牌倍数高达512倍,让你体会最刺激的牌局。

全天24小时赛事不断 奖励丰厚

高手云集岂能没有排名,分出排名岂能没有奖励?《途游斗地主》中采用ASS打立出局+定分淘汰赛制,设计了多人冠军赛、九人快速赛、三人快速赛等多种比赛赛事,赛事时间贯穿全天。另外,《途游斗地主》每天赛事的奖金池高达千万金币,来玩就有100%的机会得金币及其他奖励哦!

可爱表情恶搞配音 Q萌欢乐

游戏采用Q版人设,正太与萌妹子化身游戏中当地主与农民,人物动态表情可爱萌动,“我炸你个桃花朵朵开”等恶搞配音让游戏过程更加欢愉,背景音乐轻柔欢快,具有极强的感染力,让你时刻保持愉快心情!

认证头像实时语音 真实沟通

游戏可自定义头像,真实头像可申请官方认证。另外,游戏拥有全城语聊功能,在游戏的过程中无需打字,即可畅快与他人无阻碍沟通,究竟对面的“他”是萝莉?是御姐?是正太?是大叔??只需看头像听声音就可辨别哦!

《途游斗地主》采用最顶尖的防作弊技术,快速游戏自动配桌,彻底杜绝作弊。另外,游戏采用最有效的流量压缩技术,完美适应2G(E)网络,全天游戏只需1.2M,同时保证游戏画面流畅,不卡、不慢、不断!想要绝对公平、最省流量的斗地主,就快下载吧!

一亿手机玩家的玩牌选择

炸弹横飞,史上最刺激的牌局

每日赠送4000—10000金币,无需充值玩得爽

《途游斗地主》至今已经拥有1.5亿手机下载用户,每天有30万人新加入《途游斗地主》,是当前中国人手机上最流行的扑克游戏。《途游斗地主》提供了经典,欢乐,癞子,二人,三人等当前市面上最流行的斗地主玩法。除此之外,每天都会举办各项斗地主比赛,发放丰厚的奖励。《途游斗地主》在设计上追求公平的规则与简易的操作,更符合年轻人打“快牌”的需求,是手机上最刺激的“斗地主”游戏。

全面提升1080p高清画质

优化牌局支持体育总局相关棋牌赛事

赛事优化,增加多种全新赛事

系统链接优化,流量更绿色

途游斗地主是一款超级受欢迎的休闲娱乐类手机游戏!现游戏玩家已经破亿!途游斗地主游戏为玩家提供了时下最流行的游戏玩法,操作简单,画面简约大方,老少皆宜!游戏还会每天安排各项比赛,赢得比赛的有可能会获得微信红包哟!感兴趣的小伙伴们欢迎下载体验哦!

火箭、飞机、炸弹横飞 随时翻盘

玩牌最痛苦的事情就是牌太烂,被压制?玩《途游斗地主》没有差牌,增加了得到炸弹牌的几率,让炸弹逆袭的机会更多。除此之外,每局最高翻牌倍数高达512倍,让你体会最刺激的牌局。

全天24小时赛事不断 奖励丰厚

高手云集岂能没有排名,分出排名岂能没有奖励?《途游斗地主》中采用ASS打立出局+定分淘汰赛制,设计了多人冠军赛、九人快速赛、三人快速赛等多种比赛赛事,赛事时间贯穿全天。另外,《途游斗地主》每天赛事的奖金池高达千万金币,来玩就有100%的机会得金币及其他奖励哦!

可爱表情恶搞配音 Q萌欢乐

游戏采用Q版人设,正太与萌妹子化身游戏中当地主与农民,人物动态表情可爱萌动,“我炸你个桃花朵朵开”等恶搞配音让游戏过程更加欢愉,背景音乐轻柔欢快,具有极强的感染力,让你时刻保持愉快心情!

认证头像实时语音 真实沟通

游戏可自定义头像,真实头像可申请官方认证。另外,游戏拥有全城语聊功能,在游戏的过程中无需打字,即可畅快与他人无阻碍沟通,究竟对面的“他”是萝莉?是御姐?是正太?是大叔??只需看头像听声音就可辨别哦!

《途游斗地主》采用最顶尖的防作弊技术,快速游戏自动配桌,彻底杜绝作弊。另外,游戏采用最有效的流量压缩技术,完美适应2G(E)网络,全天游戏只需1.2M,同时保证游戏画面流畅,不卡、不慢、不断!想要绝对公平、最省流量的斗地主,就快下载吧!

一亿手机玩家的玩牌选择

炸弹横飞,史上最刺激的牌局

每日赠送4000—10000金币,无需充值玩得爽

《途游斗地主》至今已经拥有1.5亿手机下载用户,每天有30万人新加入《途游斗地主》,是当前中国人手机上最流行的扑克游戏。《途游斗地主》提供了经典,欢乐,癞子,二人,三人等当前市面上最流行的斗地主玩法。除此之外,每天都会举办各项斗地主比赛,发放丰厚的奖励。《途游斗地主》在设计上追求公平的规则与简易的操作,更符合年轻人打“快牌”的需求,是手机上最刺激的“斗地主”游戏。

全面提升1080p高清画质

优化牌局支持体育总局相关棋牌赛事

赛事优化,增加多种全新赛事

系统链接优化,流量更绿色

本软件是基于android平台的斗地主AI,我们在源代码的基础之上,旨在改进AI的算法,使玩家具有更丰富的体验感,让NPC可以更为智能。

(1)发牌和叫牌:一副扑克54张,先为每个人发17张,剩下的3张作为底牌,玩家视自己手中的牌来确定自己是否叫牌。按顺序叫牌,谁出的分多谁就是地主,一般分数有1分,2分,3分。地主的底牌需要给其他玩家看过后才能拿到手中,最后地主20张牌,农民分别17张牌。

(2)出牌:地主先出牌,按照逆时针顺序依次进行,农民利用手中的牌组织地主继续出牌,并和同伴配合(这种配合的默契程度,之后会在算法中体现)尽快出完手中的牌。当一手牌在另外两家打不过的情况下,出牌的玩家继续出牌。

(3)牌型以及大小:单牌大小顺序为:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3,组合牌大小顺序为:火箭最大,炸弹其次,大过任何的牌型。

如果是同种牌型,则比较其主牌作为单牌时的顺序。下面是各种牌型的使用说明:

单牌:任何一张牌都是单牌,大小为:大王,小王,2,A,K,Q,J……

对牌:2张数值相同,花色不同的牌。

三张:3张数值相同,花色不同的牌。

单顺:5张或5张以上,数值连续的牌,2和双王不能列入其中。

双顺:3个或者3个以上数值连续的对牌。

三顺:2个或2个以上数值连续的三张。

飞机:三顺加数量相同的单牌或者对牌。

炸弹:4张数值相同的牌。

四带二:炸弹+(两张单牌或者对牌)。

(三)代码的详细解析:

整个游戏将近3000行代码,共由10个类组成,以下先将10个类的具体作用在表格中展示出来,再具体分析每个类的具体功能:

Person:游戏中的玩家,其中两家是NPC(这里仅限于单机游戏,目的是要测试计算机的AI智商)

Desk:一个游戏桌位,存储着三个玩家的共有信息,和当前游戏的进度控制

Card:每一手牌都是一个Card类的实例

Poke:洗牌,比较大小等操作

PokeType:定义了牌型的接口,里面定义了十二种牌型常量和两种绘制牌的方向

AnalyzePoke:分析手中的所有牌,将各种牌型划分

(人工智能主要在Person类中NPC出牌的过程中展现)

UniqInt:一个存储不同数值的辅助工具类

本游戏是一个单机游戏,所以桌子(Desk)只有一个,桌子上有3个玩家(Person),其中两个是NPC玩家,一个是用户玩家,每一个玩家都有一把牌,17张或者20张,每一把牌都可以分成很多手牌(Card)。

上面已经分析了Desk,Person,Card之间的关系,下面逐个逐个进行解析。

Desk是桌子类,它持有3个玩家的实例对象,负责为3个玩家分牌,控制出牌的顺序流程,当前分数的倍数等全局性信息。

Desk类地成员变量:

这里调用了一个出牌人的AI函数,对于timeLimite的理解,感觉是让机器再多算一会儿,控制回溯的深度?这里有待考虑。

如果NPC没有大牌了,就选择不要牌,如下是对于不要牌的操作:


nextPerson()函数用于定位下一个出牌的人(对于不要之后的轮转函数),而对于buyao()函数,这里有待进一步理解。

(如下的代码和UI有关,这里就不列出了)

对于Person类自己的一些见解:


这里,AI考虑当玩家没有任何“威胁”的情况下,任意出了一手牌,其实按照习惯,应该出一手玩家认为在当前时刻最为迫切出的牌,所以,这里的AI有待补完。

PokeType类,也就是其中的对于牌型的定义:


Poke获取牌型信息:

Poke定义了一些关于扑克牌的核心操作,例如洗牌,获取牌型,出牌等。作为一个关于扑克操作的工具栏,Poke中的所有方法全部是静态方法,可以直接通过类名调用,不实例化Poke类。

关于洗牌的操作,实际上,根据经验可知,在物理上,洗牌六次可以达到最大的混乱度,但是,这里采用了一个随机算法,也就是让54张牌分别和随机生成的牌发生交换,这种方法不置可否,应该没有常规洗牌那么“随机性”,不过,作为置乱,也已经足够随机了。


获取牌型之后,通过判断两手牌的大小,需要知道一手牌的牌值:


这里只对于“绝对优势”的牌做出了比较,比如:火箭和炸弹。

下 面继续人工智能,Poke类中给出了这样一个方法,可以直接从牌中选中能够打过card值得牌,如果没有则返回false;(其中运用了C++--STL 中的vector作为存储容器,这里还有一个小亮点,利用must值来判断紧迫性,如果neesZd为true,则需要炸弹了配合,也就是到了一些关键关 头,另外,在选择拆牌的时候,考虑到“火箭”和“4个2”的牌是拥有绝对实力的,这样的牌都不能拆开。在检查炸弹的时候,也根据紧迫性几率出牌,如果下家 是和自己一伙的,则顺延给下家)


这里,对于不同的人工智能解析,会有不同的版本,这里的版本暂时设定为Simple2。

以下是出牌智能,上述的解析函数运用在出牌智能中。

该出牌智能基于如下一些原则:

玩家只剩下一手牌的时候,此时无论如何也应该要出牌。

对于要牌者(这里理解为挑战者):

当玩家非地主时,如果是地主出的牌,则和BOSS的紧迫性原则差不多,但是,如果是自己家的牌的话,遵循以下的一些原则:

(1) 如果我很可能一次性或者几乎一次性地出完牌(c<=3),那么我就出牌。

(2) 如果我手中的牌的大小大于一定的值(这个值可以经过商议之后微调,不过,这里暂时限定为card.value=12),否则,我可以顺延一个。

这里,有一个很好的想法是“紧迫程度原则”,但是,是否就用must变量来处理,有待进一步分析。

最后一个类为AnalyzePoke类,进行牌型的分析,与牌型的分析不同,这里是对一副牌的分析,上面是对一手牌的分析。AnalyzePoke类本来应该也放置在Poke类中,但是为了减少Poke类中的代码量,于是就将牌型的分析这个模块分离出来,

AnalyzePoke最主要的方法就是分析方法,它将一副牌中所有的牌型全部分析出来(按照牌的威力的依次下降逐层逐层分析的),放置到各自的Vector容器中,这样就可以在需要的时候从各自的牌型中取得,或者进行组合得到。


(这样,可以初步解析出一副牌,以及分析出牌的“综合实力”了,需要改进的地方还有很多,比如,有些时候,牌的“威力”并不是那么固定的)

以 上,就是所有的主要代码,电脑NPC的智商还是有些偏低,这里没有用到一些人工智能的算法(利用博弈树,DFS,BFS,A*)等等,貌似用到了回溯,但 是,其中有些亮点值得注意,这里并没有纯粹客观地利用搜索的深度来逐渐扩大NPC的“智商”,因为,这样会引入一些比较大的时间复杂度,而这在作为玩家的 游戏中时不可取的,我们应该在加强NPC的聪明程度的同时考虑到玩家的耐心程度,斗地主AI的优秀程度,也就是这两个方面的利弊权衡吧!

以上就是我对那3000行代码的一些见解,关于UI,绘图,以及线程刷频等一些东西我就不拿出来了。

我要回帖

更多关于 单机斗地主(单机版) 的文章

 

随机推荐