五子棋算法设计随想
作者:张景平
五子棋是深受人们特别是年轻朋友喜欢的一种娱乐性很强的益智游戏。本文讲讨论如何让计算机实现具有一定智能的五子棋算法。其中都是随时所想的记录。
一、如何将一个空棋位两端的棋势累加起来
1、两端只有一方的棋子
A.冲+冲型
显然冲+冲还是冲。并且冲值累积。例如,冲1+冲2=冲3。但是,可以看到,当冲值和小于5时,两者累加得到死棋。而冲值和大于等于4时此时为棋势最大。因此,总结起来,对于只有一方的冲值相加,只有两种情况,要么为死棋(棋势最小),要么为极棋(棋势最大)。
B.冲+活型
冲+活还是冲。冲值相加。例如,冲1+活2=冲3。
C.活+活型
活+活还是活,活值相加。例如,活1+活2=活3。
2、两端有不同方的棋子
A.冲+冲型
这个问题也不复杂。因为双方互相在此棋位制约,所以只有冲值不大于4,就是死棋,而冲值大于等于4时又为极棋。例如,敌冲1+我冲2=死棋,敌冲2+我冲3=死棋,敌冲4+我冲1=极棋。
B.冲+活型
这种情况也比较容易讨论。其实,认真观察会发现,双方棋子也在互相制约。
只要冲方不是冲4,此时此位的棋势即取活方棋势,因为无论如何冲方也不可能在此棋位胜利。而,冲方是冲四是就取冲方棋势。例如,敌冲2+我活1=我活1,敌冲4+我活1=敌冲4,敌活1+我冲2=敌活1,敌活2+我冲3=敌活2,敌活3+我冲4=我冲4。
C.活+活型
仍未活型。比较两者棋势,大者的棋势即为该棋位的棋势。例如,敌活1+我活2=我活2,敌活4+我活1=敌活4。
二、关于不同棋型棋势的设计
1、应当让冲4、活4等棋型拥有最高棋势。