五子棋(人机对弈)——Java权值法五子棋博弈

五子棋人机博弈五子棋,人与人之间博弈,我们不用考虑太多,都是玩家自动思考。 但是如果我们要玩一个单机的五子棋,实现人机的对战,那么我就得“帮”电脑考虑下走哪步了。 实现的方法大概有三种:最大权值法决策树法机器学习训练这里我们主要针对第一种方法讨论下,大致思路如下:我们绘制好一个棋盘后,假定大小为 15*15; 下棋之前,对于棋盘中的每个空位,我们每都替电脑人...
摘要由CSDN通过智能技术生成

五子棋人机博弈


五子棋,人与人之间博弈,我们不用考虑太多,都是玩家自动思考。
但是如果我们要玩一个单机的五子棋,实现人机的对战,那么我就得“帮”电脑考虑下走哪步了。
实现的方法大概有三种:

  1. 最大权值法
  2. 决策树法
  3. 机器学习训练

这里我们主要针对第一种方法讨论下,大致思路如下:

  1. 我们绘制好一个棋盘后,假定大小为 15*15;
  2. 下棋之前,对于棋盘中的每个空位,我们每都替电脑人“掂一掂”下在哪里合算;(估权过程)
  3. 对每个空位按照规则都计算完权重,我们找出权重最大的位置,此位置就是npc落子位置

那么现在的问题就是,这个权重的计算规则是怎样的呢?
首先,我们思考一下人是怎么下子的。

  1. 当该位置四周为空时,这个位置落子可能就不是那么有意义;
  2. 我们最大可能地去实现将棋子相连,若该位置四周已出现一条连线,则连子数越多,该子越重要
  3. 就算一条线有很多子已经相连,如果该线的一端被堵住,那么该线的重要程度降低,我们称之为眠连,otherwise,两端都没堵住我们称之为活连。

现在我们来将棋子相连的情况进行下归类赋权

空子位置我们用 “0” 表示,白子用“2”表示,黑子用“1”表示;
我们主要分为以下几种情况:

定义</
  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值