是否有任何Chess游戏API,纯粹用JavaScript编写?没有Flash!有谁知道国际象棋游戏中使用的算法(一般情况下)?
国际象棋算法如何运作?:
国际象棋计算机试图做的是在未来产生5或10或20次棋盘位置树.假设任何董事会职位大约有20个可能的移动,则五级树包含3,200,000个董事会职位.10级树包含大约10,000,000,000,000(10万亿)个位置.计算机可以计算的树的深度由玩游戏的计算机的速度控制.最快的国际象棋计算机每秒可以生成和评估数百万个董事会职位.
一旦它生成树,那么计算机需要"评估板位置".也就是说,计算机必须查看棋盘上的棋子并确定棋子的排列是"好"还是"坏".它的方式是使用评估函数.最简单的功能可能只计算每一方的件数.如果计算机处于白色状态且某个板位置有11个白色部分和9个黑色部分,则最简单的评估功能可能是:
11 - 9 = 2显然,对于国际象棋来说,公式太简单了,因为有些作品比其他作品更有价值.因此,公式可能会对每种类型的作品施加重量.正如程序员所想的那样,他或她通过添加诸如董事会职位,中心控制,国王检查的脆弱性,对手女王的脆弱性以及大量其他参数等内容来使评估功能变得越来越复杂.然而,无论函数有多复杂,它都会缩减为单个数字,代表该董事会职位的"优点".
来源.
用于构建自己的javascript'引擎',可以在基本级别下棋,逐步检查Javascript Chess与CPU oppo
如果你向下滚动它包含这个的源代码,必须说非常有限,纯粹基于javascript的国际象棋引擎.它还有一个游戏的工作版本,以及用于构建自己的所有必要资源.
一些有用的资源:
首次在Javascript中实现国际象棋引擎
由Tony Marsland撰写的"国际象棋程序剖析"是对当前国际象棋程序如何运作的一个很好的介绍.
国际象棋空间
Paul Verhelst - 问题与解答
关于Minimax算法的参考书目(较新版本).
Crafty是一个强大的程序,其源代码是免费提供的,对于国际象棋程序,它是非常易读的.
未完成的工作和国际象棋程序员面临的挑战
国际象棋有完美的算法吗?这里讨论如此
计算机如何玩国际象棋我发现的最好的书描述了国际象棋人工智能算法背后的理论
对于算法讨论,请尝试Chess Programming Wiki.
适合严肃的国际象棋引擎的技术不一定适合基于网络的游戏.真正的国际象棋引擎运行速度要快几个数量级,使用多兆字节的开放式书籍,每回合花费几分钟或几小时.一个真正的国际象棋引擎搜索深度超过12层,而javascript在合理的网络时间内不会超过6层.因此有点像一块方形预言,已减少和可能的负回报作为搜索深化和因此是井出在国际象棋的编程界时尚,可以说是非常适合于JavaScript引擎.如果你做人们在80年代所做的事情,你最终会得到一个能够击败大多数访客的活泼且易于管理的引擎.
当然,你真的不想查看其他人在做什么.只需确保您有一些alpha-beta搜索的变体,然后根据您的需要调整您的评估函数和其他所有内容.
在2002年和2012年,我写了然后改写了p4wn,一个小型公共领域的JavaScript引擎.它使用alpha-beta和一个方块式的oracle.它可能比Garbochess-JS弱,但随后Garbochess有一本比整个p4wn引擎更大的开头书.