2018年6月12日

在Javascript中使用protobuf与c++进行通信

摘要: 环境:Win7_64旗舰版,VS2013 最近在研究Webkit,已经编译成功,接下来就是Javascript与c++如何传输数据,立刻就想到了protobuf,但是谷歌不支持Javascript,百度了很久,终于找到了 这篇文章:http://blog.csdn.net/xnn2s/article 阅读全文

posted @ 2018-06-12 23:57 &大飞 阅读(263) 评论(0) 推荐(0) 编辑

JavaScript实现10大算法可视化

摘要: 本文将详细介绍在JavaScript中算法的用法,配合动图生动形象的让你以最快的方法学习算法的原理以及在需求场景中的用途。 有句话怎么说来着: 雷锋推倒雷峰塔,Java implements JavaScript. 当年,想凭借抱Java大腿火一把而不惜把自己名字给改了的JavaScript(原名L 阅读全文

posted @ 2018-06-12 22:57 &大飞 阅读(2135) 评论(1) 推荐(1) 编辑

斗地主AI算法——第十七章の总结整理

摘要: 2.0版本的斗地主AI算法在这里就算告一段落了。 **********************完结撒花********************** 不过后续应该还会开发更智能的版本,毕竟当前版本还有很多策略没有加入。 比如说角色位置(地主上家下家打法)、比如说记牌算牌、又比如对于一些残局的分析等等。 阅读全文

posted @ 2018-06-12 22:46 &大飞 阅读(1870) 评论(0) 推荐(0) 编辑

斗地主AI算法——第十六章の样例分析

摘要: 上一章,我们已经完成了测试模块的开发。至此我们已经可以进行整体测试了。本章主要内容就是对随机生成的对局情况进行简单的分析。 实际上整个开发过程绝大部分时间都是用在样例分析上,通过样例给出的返回操作分析自己设计的策略是否合理,然后不断的调整策略,调整权值等等。 这个过程持续了蛮久的,而且很多地方都反复 阅读全文

posted @ 2018-06-12 22:45 &大飞 阅读(550) 评论(0) 推荐(0) 编辑

斗地主AI算法——第十五章の测试模块

摘要: 前面几章已经把整个斗地主AI算法工程完成的差不多了,接下来进入整合联调以及模拟测试模块。 测试模块主要任务就是代替服务器给出我们需要的数据。因为我们本来的计划是封装成类库通过服务器调用获取,其调用的接口无非就是叫分、被动出牌、主动出牌。 被动出牌和主动出牌我们已经完成,叫分我们已经实现了权值的获取, 阅读全文

posted @ 2018-06-12 22:44 &大飞 阅读(824) 评论(0) 推荐(0) 编辑

斗地主AI算法——第十四章の主动出牌(3)

摘要: 上一章已经排除了飞机、三带等牌型,那么除去炸弹王炸以外,我们只剩下单牌、对牌、三牌以及单顺、双顺、三顺了。 首先说单牌、对牌、三牌。其逻辑基本一样,只是出牌的个数有差别,即:如果该i牌数量满足这种牌型要求,即先打出,计算其剩余价值。 [cpp] view plain copy //出单牌 if (c 阅读全文

posted @ 2018-06-12 22:43 &大飞 阅读(296) 评论(0) 推荐(0) 编辑

斗地主AI算法——第十三章の主动出牌(2)

摘要: 上一章我们已经搭好了出牌算法的基本框架,本章主要实现优先处理的三带、飞机等牌型。 首先定义一些基本变量: [cpp] view plain copy //暂存最佳的价值 HandCardValue BestHandCardValue; BestHandCardValue.NeedRound = 20 阅读全文

posted @ 2018-06-12 22:42 &大飞 阅读(223) 评论(0) 推荐(1) 编辑

斗地主AI算法——第十二章の主动出牌(1)

摘要: 本章开始,我们介绍主动出牌的算法,和被动出牌类似,我们第一步把主要架子搭起来。 首先清空出牌序列 [cpp] view plain copy clsHandCardData.ClearPutCardList(); [cpp] view plain copy [cpp] view plain copy 阅读全文

posted @ 2018-06-12 22:41 &大飞 阅读(847) 评论(0) 推荐(0) 编辑

斗地主AI算法——第十一章の被动出牌(5)

摘要: 本章是被动出牌的最后一章,截止目前,我们已经解决了大部分牌型。只剩下飞机和炸弹了。 飞机无疑是最复杂的类型,他等于顺子和三带的结合体,但又增加了很多难度。 根据上一章的算法,我们可以大概想到,若是带出去一张我就加一个循环,若是带出去两张我就加俩循环,但是这个飞机长度不一致,带出去的牌个数也就不一致, 阅读全文

posted @ 2018-06-12 22:40 &大飞 阅读(236) 评论(0) 推荐(0) 编辑

斗地主AI算法——第十章の被动出牌(4)

摘要: 上一章已经说明了单顺的实现方法,双顺、三不带顺牌型实现方法与单牌基本类似。改动的地方除了上一章说的枚举牌类型,出牌时value_nPutCardList的处理,回溯时value_aHandCardList和nHandCardCount的变化等几个方面,还有length设置的变化,因为双顺的lengt 阅读全文

posted @ 2018-06-12 22:39 &大飞 阅读(275) 评论(0) 推荐(0) 编辑

斗地主AI算法——第八章の被动出牌(2)

摘要: 上一章我们已经搭好了被动出牌的基本架子,本章我们主要说明一下被动出牌算法的基本步骤。 我把出牌逻辑分为四个阶段,也就是策略的优先级。分别是:【直接打光手牌】→【同类型牌压制】→【炸弹王炸压制】→【不出】 第一阶段【直接打光手牌】就是说如果我们可以一次性把手牌打出,那就不用考虑接下来价值之类的问题了, 阅读全文

posted @ 2018-06-12 22:38 &大飞 阅读(447) 评论(0) 推荐(0) 编辑

斗地主AI算法——第九章の被动出牌(3)

摘要: 上一章已经说明了被动出牌算法基本的出牌思路,且以单牌为例给出了具体的代码。 对牌、三不带牌型实现方法与单牌基本类似。改动的地方主要是枚举牌类型,出牌时value_nPutCardList的处理,回溯时value_aHandCardList和nHandCardCount的变化等几个方面。下面给出完整代 阅读全文

posted @ 2018-06-12 22:38 &大飞 阅读(231) 评论(0) 推荐(0) 编辑

斗地主AI算法——第七章の被动出牌(1)

摘要: 哎,之前扯了那么多蛋,终于讲出牌了! 本章开始讲被动出牌的逻辑算法。首先我们先把架子搭起来,被动出牌我们肯定是要知道场上目前打出的是什么牌型。 在第二章数据结构里我们定义过,游戏全局类里面有一个存放当前牌型结构的成员,即 [cpp] view plain copy //当前打出牌的类型数据,被动出牌 阅读全文

posted @ 2018-06-12 22:37 &大飞 阅读(474) 评论(0) 推荐(0) 编辑

斗地主AI算法——第六章の牌型判断

摘要: 本章实现了上一章提到的检查当前是否只是一手牌函数ins_SurCardsType [cpp] view plain copy /* 检查剩余的牌是否只是一手牌 是: 返回手牌类型数据 不是:返回错误类型(cgERROR) */ CardGroupData ins_SurCardsType(int a 阅读全文

posted @ 2018-06-12 22:36 &大飞 阅读(1445) 评论(0) 推荐(0) 编辑

斗地主AI算法——第五章の总值计算

摘要: 本章算是比较重点的一章,前一章已经对各个牌型做出了价值定义,本章主要实现计算手牌总价值模块函数。 根据之前的思路,我们设定一下输入输出: 输入:手牌数据类(主要用手牌个数nHandCardCount以及手牌状态数组clsHandCardData.value_aHandCardList) 输出:手牌价 阅读全文

posted @ 2018-06-12 22:35 &大飞 阅读(442) 评论(0) 推荐(0) 编辑

斗地主AI算法——第三章の数据处理

摘要: 上一章我们定义了基本的数据结构,相信大家看到手牌类里面那么多出牌序列时一定会比较愤慨。。。 其实一开始写的时候我也是觉得很脑残,不过后续开发证明了这样的结构还是可以的,因为只要我封装了一层数据转换,接下来所有的算法策略都只用到2个成员变量,状态数据及手牌数量。特别便于调试、管理。那么接下来就写出类成 阅读全文

posted @ 2018-06-12 22:34 &大飞 阅读(483) 评论(0) 推荐(0) 编辑

斗地主AI算法——第四章の权值定义

摘要: 第一章业务逻辑结尾部分我提到了权值的计算方法: ①每个单牌都有一个基础价值②组合牌型的整体价值与这个基础价值有关,但显然计算规则不完全一样。③整手牌可以分成若干个组合牌,但分法不唯一。 当时,我说了①和②可以直接定义,③需要迭代计算。所以本章的主要内容就是确定基础价值&组合牌型的价值定义 对于牌型权 阅读全文

posted @ 2018-06-12 22:34 &大飞 阅读(662) 评论(0) 推荐(0) 编辑

斗地主AI算法——第二章の数据结构

摘要: 上一章我们已经确立了基本的业务逻辑处理流程。从本章开始,我们便进入开发阶段。 首先就是明确我们都需要哪些数据,且它们以怎样的形式存储。 首先从上一章反复提到的手牌权值结构说起,也就是F()的返回值,他包含了两个成员,①手牌总价值②需要打几手牌。 [cpp] view plain copy //手牌权 阅读全文

posted @ 2018-06-12 22:33 &大飞 阅读(955) 评论(0) 推荐(0) 编辑

斗地主AI算法——第一章の业务逻辑

摘要: 转眼间快到了五月,帝都的天气也变的非常梦幻。 时而酷暑炎热,时而狂风席卷。 而不管外面如何,我们也只能在办公室里茕茕无依的撸着代码,无可奈何的负着韶华。 世界是寂寞的,寂寞到不只是寂寞,而是死一般的寂寞。 或许AI就是因此而生吧,因为到了最后,能一直陪伴我们走下去的,或许也就只有程序了。 好吧不装逼 阅读全文

posted @ 2018-06-12 22:32 &大飞 阅读(838) 评论(0) 推荐(1) 编辑

lua——赢三张牌型处理相关算法(下)——牌型比较

摘要: 上文中我们已经实现了赢三张牌型的判定方法,同时我们也给出了一个枚举结构CardType。不难理解,若两组牌不是同一牌型的话,直接根据枚举的值进行比对就可以了。若是相同牌型还需要进行进一步的判断。所以我们暂且将比牌函数分为两个分支 [plain] view plain copy --@比牌接口函数 - 阅读全文

posted @ 2018-06-12 22:31 &大飞 阅读(330) 评论(0) 推荐(0) 编辑

导航