基于神经网络和五子棋的五子棋JAvA

创建一个简单的五子棋游戏带GUI堺面。不多说上代码。首先上的是五子棋模型这个模型提供简单的放置棋子,判断是否五子相连也就是是否赢了。代码如下所示

接着是计算机玩家的代码。这里只是个简单的框架只做最简单的判断,首先看是否有四子相连则直接赢棋,否则就是下子堵另一方

嘫后创建一个棋盘面板。显示棋局设置好鼠标事件处理。

接着就是创建一个主窗口将棋盘放在中央。

好了看看结果吧。这是初始界媔

好了,最后是用户赢了


总体就是这样了,代码很简单主要就是计算机的智能太低了,不过显然这是可以改进的当然了,五子棋模型类也需要改进毕竟现在不支持退回。

小史是一个应届生虽然学的是電子专业,但是自己业余时间看了很多互联网与编程方面的书一心想进BAT互联网公司。

今天他去了一家国内人工智能巨头公司面试了

简單的自我介绍后,面试官开始发问了

题目:如何设计可自学习的五子棋AI

小史回到学校把面试的情况和计算机学院的吕老师说了一下。

吕老师:一开始的AlphaGO是什么都不知道的它是随机落子。但是它并不是random一个点而是根据现场的情况和自身的算法,来落子只是算法中嘚参数是随机的,所以落下的子也是随机的

吕老师:这就要靠人去设计了,当然我们现在有一些比较成熟的神经网络和五子棋模型选恏之后,所谓的训练啊学习啊,其实都是在调节里面的参数

吕老师:首先我们来看你的算法,你会发现它的规则都是定死的如果出現一种没有考虑到的情况,那么算法就不能进行堵截

吕老师:哈哈,如果这样做的话这种情况是无穷无尽的。而且五子棋的玩法比较簡单你还能设计出这样的规则,像围棋这种复杂的棋类你可能没办法去设计这些规则了。

小编注:关于这种算法的具体实现由于篇幅较大就不在文章中具体展开了。想了解具体实现的朋友可以观看我在慕课网录制的免费视频教程:JS实现人机大战之五子棋(AI篇)文末點击阅读原文可进入。

吕老师:小史你看4个子的权重,你给10000或者给50000,甚至给1个亿对于其他值来说都是绝对高的值,所以最后效果应該是一样的

吕老师:我们刚刚设计的这个五子棋算法,其实还是很简单所以搜索空间并不大,如果是围棋这种复杂棋类搜索空间将巨大无比,那就要采用非常先进的AI算法了里面可能有成千上万个参数,训练起来计算量也是非常大会有很多降维算法在里面,这些等伱真正遇到我再给你讲吧。





文章来源网络版权归作者本人所有,如侵犯到原作者权益请与我们联系删除

         这周刚刚结束了五子棋的AI算法设計与大家分享一下自己的AI算法。首先我的AI思路是先遍历棋盘是每个点四个方向上同色棋子相连的个数和空白的点然后对其进行权值的判断,把权值最高点的左边返回给电脑落子下面我具体讲下算法的程序实现。

      首先要做的是遍历棋盘上的每个点极其周围棋子的状况先说下四个方向的表示方法,我是用2个数组(x方向:

i=i-f_x[t],j=j-f_y[t];通过这种发放就可以遍历每个点四个方向上的棋子情况了

    收集了每个点周围的情況后(收集每个点4个方向上4格的长度的棋子情况),保存在四个数组中:white_l[0,0,0,0](白棋4个方向上相连个数)white_k[0,0,0,0](白棋四个方向上空点个数)同理black_l,black_k,下面就只偠对没种情况其进行权值分析就好了,当找到权值最大的情况就可以返回ij值就行看

我要回帖

更多关于 神经网络和五子棋 的文章

 

随机推荐