五子棋人机对战,电脑智能设计思想
时间:2011-11-24
来源:互联网
A为电脑,B为玩家
十十十十十十十十十十
十十十十十十十十十十
十十十十十十十十十十
十十十十十十十十十十
十十十BB十十十十十
十十BAAA十十十十
十十十十十十十十十十
十十十十十十十十十十
十十十十十十十十十十
十十十十十十十十十十
要考虑到电脑以后的几步,尽量可以按照人的思维去下棋。
要求设计思想,可能要定义哪些变量。
作者: vipwalkingdog 发布时间: 2011-11-24
检查是否有三个连线的
作者: mengxiangyue 发布时间: 2011-11-24
人机对弈算法,网上搜索能找到很多的。
一般的思路就是自己定义权值,然后通过递归或回溯法来找到最大权值路径
所谓权值就是自己按某种规则计算的一个值
比如 1个子的权值是1, 2个子的权值是2,3个子的权值是4,4个子的权值是8,5个子最大,等等
总之保证 5个子>4个子>3个子>2个子>1个子
然后根据当前棋子的情况,分别判断每个落子点造成的新的权值的情况,取最大,然后可以通过递归或回溯法预测用户可能的走法,根据难易程度,适当的调整智能,也就是难度大的,就递归层数深一些,难度小的递归层数浅一些。
作者: qybao 发布时间: 2011-11-24
n年前刚开始自学游戏开发的时候写过
人机对弈算法,网上搜索能找到很多的。
一般的思路就是自己定义权值,然后通过递归或回溯法来找到最大权值路径
所谓权值就是自己按某种规则计算的一个值
比如 1个子的权值是1, 2个子的权值是2,3个子的权值是4,4个子的权值是8,5个子最大,等等
总之保证 5个子>4个子>3个子>2个子>1个子
然后根据当前棋子的情况,分别判断每个落子点造成的新的权值的……
很不错。可以实现。
不过我还有点不懂,能具体一点就好了。
作者: vipwalkingdog 发布时间: 2011-11-24
参考。
作者: JavaAlpha 发布时间: 2011-11-24
别人做的大作业,可以看看
作者: funfenffun 发布时间: 2011-11-24
一楼相当于没说。
引用 2 楼 qybao 的回复:
n年前刚开始自学游戏开发的时候写过
人机对弈算法,网上搜索能找到很多的。
一般的思路就是自己定义权值,然后通过递归或回溯法来找到最大权值路径
所谓权值就是自己按某种规则计算的一个值
比如 1个子的权值是1, 2个子的权值是2,3个子的权值是4,4个子的权值是8,5个子最大,等等
总之保证 5个子>4个子>3个子>2个子>1……
这个没法再具体了,再具体就成了用代码说明了
基本上就这个思路,每次落子的时候,判断每个可能的落子点的权值(这个权值是综合值),比如横向够成2个子,那么横向的权值为2,纵向构成3个子,那么纵向权值为4,对角线方向构成4个子,那么对角线方向权值是8(这里需要注意点的是,堵死的情况下权值为0,比如虽然可以连成4子,但是各方向被堵死无法连成5子,此时该点的该方向的权值可以视为0),然后权值加起来,每个落子点的综合权值不同的情况,取最大权值的落子点,如果权值相同,随机取一个落子点
作者: qybao 发布时间: 2011-11-24
作者: vipwalkingdog 发布时间: 2011-11-24
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28