通过俄罗斯方块浅谈游戏中的AI(三)AI实现代码框架

长驱直入,本节介绍这个非常容易,但是也算是五脏俱全的小AI的组成框架,并会加入重要的实现代码

 

本AI部分的程序体共包含了4个部分

 

  1. 评价参数定义部分:定义相关评价参数的数值,参数数值定义的越合乎逻辑,AI技术的效果越好
  2. 评价函数实现部分:实现各种维度的评价,此处注意要使用定义参数的值,不能使用内部值,否则不易于以后微调。
  3. AI调用之前的处理部分:判断是否需要进入AI,以及AI前的一些处理变量的清理工作。
  4. AI实现部分:形成一个递归算法(本例可以不用递归,因为最多就两层)

更好的AI程序框架

 

  1. 标准评价函数部分:定义几种标准的状态值获取函数
  2. 读取用户自定义策略类:在处理前预先读取‘5’所描述的内容,转存在内存中形成一个逻辑处理片段
  3. AI调用之前处理:同上一种框架
  4. AI实现:同上一种框架
  5. 程序外部编写实现某局面评价的策略:如评价参数定义,评价使用的函数,各种情况的条件等。

后一种方式中的智能策略更为灵活,而且可以更好的实现多种策略的切换,或者实现不同AI之间的对抗。

 

由于本程序编写时间太短,没有用第二种方式实现,以后的扑克或者其它更有意思的游戏会用第二种方式来实现。

 


 

下面就四个部分分别粘贴一段代表性的代码,让大家更清晰他们的区别以及它们之间的关系。

 

评价参数定义部分

 

这里定义了总策略,定义了各种不同情况的扣分情况等。

 

 

 

评价函数实现部分

 

这里本来有三个函数,引用的函数是总评价函数,其中包含不同总策略下的消行加分计算,及调用其它评价函数。

注意,这里有不合理代码,就是在消行,加分这块,使用了固定数值,而没有引用参数;尽量不要这样使用。

 

 

AI调用之前的处理部分

 

这个部分前面有一个if语句判断是否调用AI,如果不调用,就按照原先的路点走下去,路点的结构将作为下一个小节专门讲解。

 

 

AI实现部分

这个函数写的很一般,或者说很糟糕,大家可以大概看看它的意思就好。

实际完成的功能就是 预先定义好了找第一个方块分数最高的几个,然后计算下完第二个后的得分,把所有这些可能中的最高分拿出来当成最终选择的值。

 

对于整个算法这块来看,本函数仅仅是个调用部分,复杂的内容在评价那块,真正需要提高效率的也是评价那块,所以这块我就是实现了功能

就没有再去管它,等我把评价修改成位运算的方式后,在考虑这部分的修改。

 

下面将在写两节,一节是关于路点的结构体以及其用法的描述,另一节是如何把普通的数组计算转换成位运算,极大提高执行效率。

 

本节暂时到这里,非常希望大家指正。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值