又是本人一份人工智能作业⋯⋯首先道歉,从Word贴到Livewrter,好多格式没了,也没做代码高亮⋯⋯大家凑活着看⋯⋯想做个好的人机对弈的五子棋,可以说需要考虑的问题还是很多的,我们将制作拥有强大AI五子棋的过程分为十四步,让我来步步介绍
第一步,了解禁手规则做一个五子棋的程序,自然对五子棋需要有足够的了解,现在默认大家现在和我研究五子棋之前了解是一样多的
以这个为基础,介绍多数人不大熟悉的方面
五子棋的规则实际上有两种:有禁手和无禁手
由于无禁手的规则比较简单,因此被更多人所接受
其实,对于专业下五子棋的人来说,有禁手才是规则
所以,这里先对“有禁手”进行一下简单介绍:五子棋中“先手必胜”已经得到了论证,类似“花月定式”和“浦月定式”,很多先手必胜下法虽然需要大量的记忆,但高手确能做到必胜
所以五子棋的规则进行了优化,得到了“有禁手”五子棋
五子棋中,黑棋必然先行
因此“有禁手”五子棋竞技中对黑棋有以下“禁手”限制:“三三禁”:黑棋下子位置同时形成两个以上的三;“四四禁”:黑棋下子位置同时形成两个以上的四;“长连禁”:六子以上的黑棋连成一线
黑棋如下出“禁手“则马上输掉棋局
不过如果“连五”与“禁手”同时出现这时“禁手”是无效的
所以对于黑棋只有冲四活三(后面会有解释)是无解局面
反观白棋则多了一种获胜方式,那就是逼迫黑棋必定要下在禁点
为了迎合所有玩家,五子棋自然需要做出两个版本,或者是可以进行禁手上的控制
第二步,实现游戏界面这里,我制作了一个简单的界面,但是,对于人机对弈来说,绝对够用
和很多网上的精美界面相比,我的界面也许略显粗糙,但,开发速度较高,仅用了不到半天时间
下面我们简单看下界面的做法
界面我采用了WPF,表现层和逻辑层完全分开,前台基本可以通过拖拽完成布局,这里就不做过多介绍
根据界面截图简单介绍1处实际上市两个渐变Label的拼接,2、3是两个la