长驱直入,本节介绍这个非常容易,但是也算是五脏俱全的小AI的组成框架,并会加入重要的实现代码
本AI部分的程序体共包含了4个部分
- 评价参数定义部分:定义相关评价参数的数值,参数数值定义的越合乎逻辑,AI技术的效果越好
- 评价函数实现部分:实现各种维度的评价,此处注意要使用定义参数的值,不能使用内部值,否则不易于以后微调。
- AI调用之前的处理部分:判断是否需要进入AI,以及AI前的一些处理变量的清理工作。
- AI实现部分:形成一个递归算法(本例可以不用递归,因为最多就两层)
更好的AI程序框架
- 标准评价函数部分:定义几种标准的状态值获取函数
- 读取用户自定义策略类:在处理前预先读取‘5’所描述的内容,转存在内存中形成一个逻辑处理片段
- AI调用之前处理:同上一种框架
- AI实现:同上一种框架
- 程序外部编写实现某局面评价的策略:如评价参数定义,评价使用的函数,各种情况的条件等。
后一种方式中的智能策略更为灵活,而且可以更好的实现多种策略的切换,或者实现不同AI之间的对抗。
由于本程序编写时间太短,没有用第二种方式实现,以后的扑克或者其它更有意思的游戏会用第二种方式来实现。
下面就四个部分分别粘贴一段代表性的代码,让大家更清晰他们的区别以及它们之间的关系。
评价参数定义部分
这里定义了总策略,定义了各种不同情况的扣分情况等。
评价函数实现部分
这里本来有三个函数,引用的函数是总评价函数,其中包含不同总策略下的消行加分计算,及调用其它评价函数。
注意,这里有不合理代码,就是在消行,加分这块,使用了固定数值,而没有引用参数;尽量不要这样使用。
AI调用之前的处理部分
这个部分前面有一个if语句判断是否调用AI,如果不调用,就按照原先的路点走下去,路点的结构将作为下一个小节专门讲解。
AI实现部分
这个函数写的很一般,或者说很糟糕,大家可以大概看看它的意思就好。
实际完成的功能就是 预先定义好了找第一个方块分数最高的几个,然后计算下完第二个后的得分,把所有这些可能中的最高分拿出来当成最终选择的值。
对于整个算法这块来看,本函数仅仅是个调用部分,复杂的内容在评价那块,真正需要提高效率的也是评价那块,所以这块我就是实现了功能
就没有再去管它,等我把评价修改成位运算的方式后,在考虑这部分的修改。
下面将在写两节,一节是关于路点的结构体以及其用法的描述,另一节是如何把普通的数组计算转换成位运算,极大提高执行效率。
本节暂时到这里,非常希望大家指正。