接上篇博文本文描述简单阿尔法人机对战五子棋实现过程,只是简单实现考虑走一步策略如果要想实现走多步策略,可以在本文估值算法的基础上用极大极小值配合剪枝算法实现考虑多步策略,这样ai会显得更加聪明后期如果有时间完善,会更新代码
参考上一篇博文的界面。
其实算法非常简单畢竟ai部分只有200行代码,所以应该只能算是实现估值函数即当前局面走一步时最好的位置,不考虑走多步我的思路如下:
(1)枚举当前局面棋子可能的落点,并给不同的局面赋值越重要的局面分数会越高
(2)遍历每个可落子点
(3)在可落子点落子时,分四个方向去获得落子前后五个位置并转换成序列然后检测该序列满足(1)中的情况,并获得一定分数累加存到字典中
(5)取得分数最高的点即为最优落孓点
当然这只是考虑一步,但也有不错的棋力如果要考虑多步,请参考前面提到的极大极小值配合剪枝算法其实本博文的算法可以當作极大极小值配合剪枝算法的估值函数,然后只做迭代就好了
对上一博文的代码有一点小的更新,因此全部贴出代码可能枚举时有栲虑不到的情况,可能有些小问题不过思想是没有问题的,项目代码如下:
由于只考虑一步想要很强的棋力是不可能的,但是也不算特别白痴给它赢它还是很“乐意”的,好奇的童鞋可以拷贝代码运行试试看看本博文的思想思想仅供参考。
设计的是像QQ游戏里的一样与对掱下,想看与电脑下的可以闪了。。
五子棋属于棋类游戏的一种,规则为五子连珠为赢废话不说了。
首先绘制棋盘,标准五子棋好像是15*15用Graphics类中的DrawLine加上loop进行控制,很简单
接着是下子,点一下绘制一个点但要判断鼠标点的点,用循环来控制在鼠标点击的最近的點下子就OK这个很简单。
这只是自己的一个算法,很麻烦有问题欢迎大家多多指正。^_^有更好的方法希望大家分享。
下面的链接是核心代码...