通过俄罗斯方块浅谈游戏中的AI(二)AI策略

本节具体谈我写俄罗斯方块AI的时候使用的策略,注重策略讲解,下一章节开始注重实现。

 

上一节已经说过了,俄罗斯方块游戏的AI由于无法深层次递归,必须重单步策略,我列了一下几个考虑点进行问题展开

 

  1. 洞的维度:(越少越好)
    • 实洞:无论如何都无法通过任何移动消除的洞
    • 虚洞:可以通过左右移动消除,但是如果纯下落无法消除的洞
  2. 高低关系的维度:
    • 是否有平台:连续2个以上一样高的为平台,越多越好;
    • 是否有1个高度差的高低台:左高右,右高左,至少各有一个,否则略微不好;
    • 是否有2个高度差的高低台:左高右,右高左,可以各有一个,再多了就不好了;
    • 是否有3个以上的高低台:可以有一个,再多了就不好了;
    • 总得高度差:在4个高度差之内是可以接受的,否则越大越不好;
    • 总高度:总高度越低越好;
  3. 与对手的关系维度:
    • 对手是否有要攻击的行,如果有,则总高度计算时加上 对手可能攻击的行数。
    • 对手是否比较危险,且自己有攻击的行,如果有,可以主动攻击对方
      (注意,不是有了攻击行就攻击,否则可能白白给对手基石)
  4. 策略选型的维度:
    • 重攻击:攒行为主,一行消除惩罚,两行几乎不奖励,三行四行大奖励
    • 重平衡:攻守平衡,一行几乎不奖励,2,3,4行均奖励,平房级别关系
    • 重防守:防守为主,一行也奖励,尽量消除,甚至不计出现一下小空格

 

注重策略型的AI一定要把策略思考的完备,在完备的基础上,化简的越厉害,效果越好,否则可能出现计算不过来的情况。

举个例子,一直到今天,我也没有去实现落得差不多了横移的部分。我想这是大家常用的一个技巧,为什么不给电脑加上呢?

这个地方就有化繁为简的过程:

    当下落差不多再横移发生的时候,大多有两种情况:

  1. 最最开始,给的是无论怎么放都有虚洞的子,不使用这招就会出现实洞;
  2. 中途,因为形状不好,总不来合适的,只好弄个虚洞,为了和后来的方块配合,消除虚洞;

综合分析这两点:当最最开始的时候,产生一个实洞也无所谓,可以通过快速的消行减少这个影响;中途形状不好会在评价中的到体现,我们不需要刻意去做这样的移动。 当然这不代表以后不做,因为降到后来,有个代码效率提升的专讲,那个时候会因为单步判断效率飞速上升,

不会因为多一个横移判断就让电脑卡的,在这样的情况下,就不会可以追求至简,毕竟至简的前提是完备。

 

化简以后我们将不再判断虚洞相关的问题,只要有洞,就是实洞,可以降低很多运算。

 

ps:现在我的例子中用的是穷举的方式,而不久的将来,将使用A*最短路径方式,这种方式下,会把所有情况用最快的方法检索出来,非常有利于最优解的获得。

 

 

 先把每一节写的短一些,以后编辑的过程再修改。

继续等待下一节 通过俄罗斯方块浅谈游戏中的AI(三)我的俄罗斯方块AI实现代码框架

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值