如何用JavaScript 实现五子棋ai功能
展开全部
五子棋的ai很复杂,我可以给你一个思路,这是我自己想出来的思路,很笨的,照这个思路写出来的程序,ai智商不会太高,只能对付业余选手,好的算法代码量会比我这思路大N倍。可以这样,对于每种棋型:活1、死1、活2、死2、活3、死3、活4、死4、5,分别给予一个分值,棋型越强,分值越高,5的分值可以是1亿,活4可以是1万,这个比例,可以自行调节,个人认为1个活型=2个死型,同等级(如3级:活3、死3)活型的分应为死型的2倍。然后,对于每一个棋盘己方可落子点,左右各数4个位置,加起来共9个点,对这9个点连成的线判断棋型,判断完后,加上相应棋型的分值,先横着,再是竖着、左斜线、右斜线,判断完后,即可得到该点进攻总得分,然后是判断地方在这个点得到的进攻分,这个分也是己方的防守得分,己方的进攻得分+防守得分=总分,比较各个点总分,在总分最高的点下棋。我以前用VB实现过,代码精简再精简,最后大约3000行,除掉其他代码,纯AI的代码大约2000行,我做了一学期才做成,ai棋跟我不相上下,有时候能下出妙着,有时候犯傻。
求vc简单的五子棋AI算法
我有个简单的思路:先定义一条线上棋子的各种布局,比如初步定义长度为五个子 ◎◎◎◎● ◎◎●◎* ◎●◎** ◎*◎*◎ 等等.白圈是自己的子,黑圈是对方的子,叉子是未走的格子.程序里有个布局表,再定义各个布局的分数,比如连五最99分,连三30分等等.当机器走时,在空格放入一子,然后扫描每条直线,匹配布局,然后累计得分.逐个放子,得分最高的那个位置,作为下一步的走法.不断调整得分表,可以提高程序胜率.大概是这个意思.抛砖引玉.
谁有做五子棋AI的思路 给点提示 有代码当然也更好
/*turboc2.0下编译通过*/#include #include #include #include #define N 15#define B 7#define STOP -10000#define OK 1#define NO 0#define UP 328#define DOWN 336#define LEFT 331#define RIGHT 333/*定义了两个数,n为棋盘的大小。b为背景颜色的数值*/int a[N+1][N+1];int zx,zy;int write=1,biaoji=0;struct zn{ long sum; int y; int x; }w[N+1][N+1],max,max1;程序比较长,请看下面链接: http://club.it.sohu.com/read_elite.php?b=program&a=180178
j2me五子棋中AI
http://www.j2megame.cn/bbs/viewthread.php?tid=1284&extra=page%3D1
毕业设计:五子棋的人工智能算法实现,用BP神经网络
可以的!之所以叫BP网络,是因为使用了反向传递算法,这是一种结果导向的自学习方法,用在五子棋上是可以的.因为五子棋的游戏方法正是很明显的结果导向的过程.简单说这么个过程:1.设置输入和输出类型,比如都是坐标[x1,y1]、[x2,y2]…2.训练:你告诉网络 A情况下应该输出A1 B情况下应该输出B1 C情况下应该输出C1…A+B情况下应该输出AB13.测试:你问网络A+B+C情况下,应该输出多少?在哪里下子(就是[x,y]是多少?)网络就根据前面BP训练的结果自动算出你要的坐标.用Matlab神经网络工具箱做吧,不是很难.另外,五子棋的棋盘别太大了,训练难度和时间是随棋盘大小成级数增长的.
求五子棋C语言AI算法(原创思路)
你百度,极大极小数alpha-beta剪枝树算法这是最基础的算法,如果你想做得好,这个东西绝对够你研究个三年五年的.我写过五子棋人工智能,如果你需要,我有源码发给你.
现在的五子棋AI在职业比赛规则下与人对决是什么水平
如果AI执黑的话,人类再顶尖的选手也不是对手,如果执白(前提不允许AI交换),人类顶尖选手一样赢AI. 不是AI弱,而是五子棋变化太少,基本变化都已算净,五子棋人类之间的比赛实际上比的是谁的记忆力更好! 另:按规则可以交换,10年前的AI人类就已经下不过了.
求个C语言的五子棋AI思路……
好的AI算法,可不可以算一下每个可落子点的权重,然后在权最大的点上落子呢?关键问题在于你要会下五子棋才好做…判断禁手无非是33,44,长连,你能判断赢棋,就应该能判断 禁手.
求五子棋AI算法,空棋位打分那个value函数,打分规则不用说了额,主要是怎么判断活4,冲4,活3等棋局形式
正常一点的想法: 1. 判断自己有没有马上赢的点; 2. 判断对方马上赢的点; 3. 判断己方活三; 4. 判断敌方活三; 5. 判断己方潜在(双活三、双活四、三叉四、……); 6. 判断对方潜在(……). 7. 判断己方潜在活三; 8. 判断敌方潜在活三; 9. 任意落子. 疯狂的: 深搜或宽搜,找出赢的几率最大的点.
java五子棋简单的人机对战程序逻辑
兄弟,不是没有落子行为,是一直有你看不出来吧,determineNextMove(int who)函数中获得坐标时:int x = (int)Math.random() * 10;,这个x永远都是0吧,应该是int x=(int)(Math.random()*10);优先级搞错了.所以你得到的坐标cell都是(0,0),通过后台打印System.out.println(cell.x + " " + cell.y);也可以看出来的吧.