人工智能的期末大作业,最近几个项目都在单干。还是要养成整理的好习惯!
开原地址:https://github.com/cstackess/Gobang
基于α-β剪枝算法的智能五子棋
一、基本介绍
游戏界面:使用了Java Swing进行开发,如图所示。
游戏步骤:
1. 先设置游戏的参数,可以选择模式(双人、单人、双机),智能(估值函数、估值函数+搜索树),搜索树(层数、每层节点),再开始游戏;
2. 在棋盘上单击鼠标左键,落下棋子;
3. 在棋盘上单击鼠标右键,查看该点的估值;
4. 可以显示落子顺序和悔棋;
5. 使用搜索树AI时,控制台显示搜索过程;
6. 某方胜利后,游戏结束。
二、棋型确定
问题:
1.五子棋棋型的定义十分模糊,如网上对活二、眠三、死四的定义经常自相矛盾。
2.在大部分论文中,考虑的棋型非常少,如对活三的典型棋型列举不够完整,且常把眠三当死三。
正确、完全的棋型:
以上问题,令我奔溃了很久,最后对比了N个文献,才确定了比较可信的参考,棋型整理如下:
棋型 |
定义 |
表达式 (1黑,2白,0空) |
图例(来自五子棋贴吧) |
长连 |
至少五颗同色棋子连在一起 |
11111 |
|
活四 |
有两个连五点(即有两个点可以形成五),图中白点即为连五点 |
011110 |
|
冲四 |
有一个连五点 |
011112 0101110 0110110 |
|
活三 |
可以形成活四的三 |
01110 010110 |
|
眠三 |
只能够形成冲四的三 |
001112 010112 011012 10011 10101 2011102 |
|