是否有任何Chess游戏API,纯粹用JavaScript编写?没有Flash! 有谁知道国际象棋游戏中使用的算法(一般情况下)?
答案 0 :(得分:55)
国际象棋算法如何运作?:
国际象棋电脑试图做的是什么 生成板位置树五 或10或20次进入未来。 假设大约有20个 任何董事会职位的可能动作, 一个五级树包含3,200,000 董事会职位。一个10级树 包含大约10,000,000,000,000(10 万亿)职位。深度 计算机可以计算的树是 由速度控制 电脑玩游戏。最快的 国际象棋电脑可以生成和 评估数百万董事会职位 每秒。
一旦它生成树,那么 计算机需要“评估董事会 “就是这台电脑有 看看板上的碎片和 决定是否安排 碎片“好”或“坏”。它的方式 这是通过使用评估 功能。最简单的可能 函数可能只计算数字 每一方都有件。如果 电脑正在玩白色和 某些董事会职位有11个白人 碎片和九块黑色碎片 最简单的评估函数可能是:
11 - 9 = 2
显然,国际象棋的公式是 方式太简单了,因为有些碎片 比其他人更有价值。所以 公式可能会对每个公式施加权重 件的类型。作为程序员 考虑一下,他或她做了 评价功能越来越多 通过添加类似的东西复杂化 董事会职位,控制中心, 国王的脆弱性检查, 对手女王的脆弱性, 还有很多其他参数。没有 这个功能有多复杂 然而,它被浓缩为 一个代表该数字的数字 董事会职位的“善良”。
要构建自己的javascript'引擎',可以在基本级别下棋,请检查Step by Step Javascript Chess with CPU oppo
如果你向下滚动它包含这个的源代码,必须说非常有限,纯粹基于javascript的国际象棋引擎。它还有一个可用的游戏版本,可以用来构建你自己的所有必要资源。
一些有用的资源:
答案 1 :(得分:5)
对于算法讨论,请尝试Chess Programming Wiki。
适合严肃的国际象棋引擎的技术不一定适合基于网络的游戏。真正的国际象棋引擎运行速度提高了几个数量级,使用了多兆字节的开放式书籍,每回合花费几分钟或几小时。一个真正的国际象棋引擎搜索深度超过12层,而javascript在合理的网络时间内不会超过6层。因此,类似于piece-square oracle的东西,随着搜索的深入而逐渐减少并且可能带来负面回报,因此在国际象棋编程圈中非常不合时宜,可以说它非常适合于javascript引擎。如果你做人们在80年代所做的事情,你将会得到一个能够击败大多数访客的活泼且易于管理的引擎。
当然,你真的不想查看其他人在做什么。只要确保你有一些alpha-beta search的变体,然后根据你的需要调整评估函数和其他所有内容。
在2002年和2012年,我写了重写p4wn,一个小型公共领域的JavaScript引擎。它使用alpha-beta和一个方块式的oracle。它可能比Garbochess-JS弱,但是Garbochess有一本比整个p4wn引擎更大的开头书。
答案 2 :(得分:1)
Computer Chess Blog记录了C#国际象棋引擎的创建。它不是JavaScript,但语法足够相似,您可以很好地理解不同的国际象棋引擎组件。
此外,如果您希望您的国际象棋引擎支持Web,您可能需要考虑将C#与Silverlight GUI一起使用。 .NET会比使用JavaScript获得更好的性能。正如您将了解到的,这将转化为更强大(更深入的搜索)的国际象棋程序。可以在GeeksWithChess.com
找到Silverlight Chess的一个很好的例子