一、迭代加深 1、什么是迭代加深 所谓迭代加深,就是让alpha-beta剪裁运行深度1,然后运行深度1,2,然后运行深度1,2,3。 2、为什么进行迭代加深 ………… Read More
posted @ 2012-07-14 00:09 zcsor~流浪dè风 Views(3306) Comments(6) Diggs(1) Edit
1、怎么让程序动起来? 程序是基于得分高低,来判断走哪步棋的。换句话说,我们评价走哪步时,总是考虑假如走这里会怎么样,假如走那里会怎么样,程序也是如此。只是实现起来没有那么简单。 2、alpha-beta剪裁是如何达到目的的? 这基于一个思想,如果局面评价是基于得分的,那么轮到谁走谁都要把这个得分弄得更高,程序如此,程序猜想对手走棋也是如此。所以,局面评价函数如果是:己方得分-对方得分,那么,这个分值越正,说明我们越接近胜利了,而这个分值越负,说明我们越接近输棋了。于是,我们总是寻找得分更高的走法,而得分低于一定程度(如对方成5)的走法,被剪裁(所谓剪裁掉,在程序中体现出来就是不继续扫描——exit for)。 3、如何实现这个递归函数? 设计递归的方式不止一种,但无疑都是要实现自己的目的。我们的目的是找到得分更高的走法,这里有这样几个关键点: A、评价得分并比较 B、最高得分点需要记录 C、要交替查找可以走的点走棋 很明显,递归语句就在遍历点的循环中;最高得分的点可以用全局变量记录。接下来讨论一下评价函数放在哪里的问题: Read More
posted @ 2012-07-12 21:55 zcsor~流浪dè风 Views(1740) Comments(0) Diggs(1) Edit
1、为什么是72个? 72这个数,是五子棋上的“成棋向量”,只有72个方向能成5,而其他方向不够长度……这么说吧,横向15,纵向15,左下右上21,左上右下21,一共72。 2、如何得到这72个向量?如何记录它们? 得到这些向量很容易,可以硬编码,也可以循环遍历。我才用了循环遍历的方式,因为为了速度更快,我需要记录向量上的每个点,而不是计算它们。——当然,这里我没有进行测试,我感觉,一个14个元素的byte数组寻址速度不会很慢。 3、得到向量之后,如何评价? 我们使用一个数组,来记录当前向量上的全部子和空位,而后和模板数组进行比较,从而得到棋型信息。我们不会得到棋型的具体分值,最终综合棋型才得到得分。 实际的评价函数,是一个非常长的函数: Read More
posted @ 2012-07-11 22:44 zcsor~流浪dè风 Views(4087) Comments(3) Diggs(1) Edit
实现位棋盘和界面的代码。 Read More
posted @ 2012-07-11 20:46 zcsor~流浪dè风 Views(2251) Comments(0) Diggs(0) Edit
说明引擎是什么,什么样的棋类可以开发引擎,实现一个引擎需要哪些技术,这些技术的作用是什么。 Read More
posted @ 2012-07-11 15:16 zcsor~流浪dè风 Views(1590) Comments(0) Diggs(0) Edit
0、引言——认识“引擎” 1、实现界面和位棋盘 2、我的五子棋引擎如何评价局面 3、基石——超出边界的alpha-beta剪裁 4、接近人类的思考方式——迭代加深、棋盘剪裁、空招剪裁、冲棋延伸 5、重点问题重点分析——静态搜索 6、记住曾经的思考——置换表 7、做一个纯粹的思考者——将引擎和界面分离 Read More
posted @ 2012-07-10 13:36 zcsor~流浪dè风 Views(819) Comments(0) Diggs(0) Edit
HOOK API是一个老生常谈的话题了,因为这种技术可以让我们在原有代码的基础上添加自己的其他代码进去,而实现我们的目的。对于C程序员来讲,这并不陌生,因为C语言可以编写标准的DLL文件,可以操作指针;对VB.NET程序员来讲,很多人都选择使用C语言去完成HOOK工作然后在VB.NET中进行调用,但实际上,并非如此。接下来我们详细介绍一下如何用VB.NET来HOOK API:一、HOOK本进程API并用托管函数处理如果你熟悉C语言的HOOK API的基本方式,那么可以直接看代码。1、查找要HOOK的API的地址通常,我们使用API函数GetModleHandle和GetProcAddress。 Read More
posted @ 2011-10-10 09:44 zcsor~流浪dè风 Views(2014) Comments(2) Diggs(0) Edit
介绍tesseract训练,使用。着重说明了一些训练、使用当中的易错点。希望能给大家一些帮助。 Read More
posted @ 2011-02-21 11:34 zcsor~流浪dè风 Views(10397) Comments(6) Diggs(1) Edit
其实这东西不止一次被科普过了。本文针对AS3且适用于AS2,AS2的人家都有修改器的。不过说起来修改FLASH游戏,我这也只是初级方法,现在还在看flexsdk4.1里面的fdb的源码,呵呵。理论上应该可以找到更好的解决办法——直接去修改二次编译后的代码,那样就可以为所欲为了,咕~~(╯﹏╰)b。闲话少说,进入这次的正题,后面的“高级”东东以后再说,反正弄着玩嘛,又不指望这吃饭,兴趣使然。 有位老大爷说得好,工欲善其事必先利其器!建议往下看之前先搞个这:http://www.yogda.com/Yogda.1.0.564.zip 。 当然了,去主页看看也挺好;要是你有闪客精灵、ASV啥的也行, Read More
posted @ 2011-02-08 16:44 zcsor~流浪dè风 Views(4440) Comments(2) Diggs(1) Edit
VB.NET内嵌ASM——示例为调API~~让我写ASM估计我和大多数人一样头疼~~~没长那好脑子,不过微软的示例给了一个很好的方法:先VC之,然后反编译,哇咔咔,还是复制粘贴来的快!! 尾巴:消息过滤器处理本窗体的键盘鼠标啥的消息……做点WndProc做不了的事 Read More
posted @ 2011-01-14 11:40 zcsor~流浪dè风 Views(1832) Comments(4) Diggs(1) Edit