标题:写了个五子棋的AI,测试一下
取消只看楼主
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
结帖率:81.25%
已结贴  问题点数:100 回复次数:3 
写了个五子棋的AI,测试一下
两种模式,电脑先下或者玩家先下,大家试两把或者4吧,看看胜率如何,测试下这个AI的水平

不要吐槽这个界面。。。。

运行压缩包里面的gobang.exe
五子棋.zip (4.27 MB)


[ 本帖最后由 czz5242199 于 2013-6-19 19:16 编辑 ]
搜索更多相关主题的帖子: 如何 压缩包 五子棋 
2013-06-19 19:14
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
得分:0 
回复 7楼 yss0729
思路不是特别复杂

首先是看自己有没有下了就能赢了
然后看能不能堵掉对面下了就能赢的
再看自己能不能下出“4连”
再看能不能堵掉对面能下出的“4连”

如果全部不满足的话,就是使用评估函数对整个局势进行评分,一般来说AI的重点就在策略使用和评估函数的选择上,我是这么写的:

一个空地(即双方都没下的格子)如果最后成为了5连的格子之一,这个5连有5+5+5+5(分别对应横着,竖着,两种斜)种可能性,其中有些可能性已经不可能了(一个已经有对方的棋子),如果某种可能性还是可能的,那么它就能为这个空格加分,加多少分呢,我是取得这种可能性对应的5个格子已经有多少个个己方格子,这样每个格子的分数就是20中可能性所给予的分数加起来。

由于双方都有一个分数,即一个格子对应两个分数(对我方的重要度和对敌方的重要度),我们分别取出对我方重要度最大的空格和对敌方重要度最大的空格,然后比较他们的大小,如果我方更大,就下对我方重要度最大的棋子,否则选择下对对方重要度最大的气质(相当于堵对面的棋)

大致思路就是这样的,其他都是细节处理
收到的鲜花
  • 韶志2013-06-19 20:47 送鲜花  10朵   附言:好文章
2013-06-19 20:31
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
得分:0 
to ls:
嗯,检查胜负的那个函数有一部分写漏了,已改正,3q
2013-06-20 09:55
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
得分:0 
回复 30楼 陨灭
好早之前写的,存在的一个bug,后来自己测试出来了,交作业之前就改了,不过这里就没更新了
2013-09-12 19:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-415566-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.502730 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved