五子棋AI对战算法

avatar 2019年06月13日18:22:40 3 5988 views
博主分享免费Java教学视频,B站账号:Java刘哥
我们小组(6个后端小哥哥,2个前端小姐姐)每两周都有一个两个小时(一般是周五下午3点)的交流分享会,一般都是大家分享最近看到什么有趣的东西,看的,玩的,什么都可以说,就是给大家放松的两个小时。如果大家没什么讲的,小组长也会给大家讲讲算法。上周是分享自己看的书和电影, 快结束的时候,给我们分了两个小组,让我们回去写五子棋对弈的算法或决策。然后下次来,两组AI对弈。

算法应该不复杂,根据自己实战时的想法来编码即可,主要是根据坐标权重选举最优的坐标。

算法总结就是,遍历整个棋牌的坐标(x,y),比如现在该黑棋下了,然后从(0,0)遍历到(18,18),寻找棋盘不为null的坐标,求它(假设当前坐标落黑棋之后)的横方向、竖方向、左斜方向、右斜方向连续的黑棋个数,然后求权重总和,具体权重可以这样算:2个连续的+1分,3个连续的+3分,4个连续的+10分,5个连续的+100分。

除了判断我方棋子的权重,还得以对方(白棋)的立场,判断该坐标对方的权重。所有权重找到最大值,返回(x,y)坐标即可。

然后需要考虑如果某一条线路上有棋子被堵了一边,分数需要减少,具体减多少,需要调。

还有如果我方是三个即将连成一线,对方也是三个即将连成一线,目前该我方下,应该是下在我方的那个点。

目前需要调优的是,如果有两个相同权重的,应该怎么分析更优的点(为长远打算)。

 

 

 
  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:3   待审核评论数:1
  1. avatar normalAsan

    做过类似的,思路类似上述的内容,但是就是运算太慢了(可能也是我不太会优化,后来也没有时间做优化,凑合着下还行)

  2. avatar 烽火离别

    所以最后去解决了么

  3. avatar 小任博客

    丝毫不会算法的路过……