JavaScript中的国际象棋游戏

时间:2010-01-13 08:25:44

标签: javascript algorithm chess

是否有任何Chess游戏API,纯粹用JavaScript编写?没有Flash! 有谁知道国际象棋游戏中使用的算法(一般情况下)?

3 个答案:

答案 0 :(得分:55)

国际象棋算法如何运作?:

  

国际象棋电脑试图做的是什么   生成板位置树五   或10或20次进入未来。   假设大约有20个   任何董事会职位的可能动作,   一个五级树包含3,200,000   董事会职位。一个10级树   包含大约10,000,000,000,000(10   万亿)职位。深度   计算机可以计算的树是   由速度控制   电脑玩游戏。最快的   国际象棋电脑可以生成和   评估数百万董事会职位   每秒。

     

一旦它生成树,那么   计算机需要“评估董事会   “就是这台电脑有   看看板上的碎片和   决定是否安排   碎片“好”或“坏”。它的方式   这是通过使用评估   功能。最简单的可能   函数可能只计算数字   每一方都有件。如果   电脑正在玩白色和   某些董事会职位有11个白人   碎片和九块黑色碎片   最简单的评估函数可能是:

  11 - 9 = 2 
     

显然,国际象棋的公式是   方式太简单了,因为有些碎片   比其他人更有价值。所以   公式可能会对每个公式施加权重   件的类型。作为程序员   考虑一下,他或她做了   评价功能越来越多   通过添加类似的东西复杂化   董事会职位,控制中心,   国王的脆弱性检查,   对手女王的脆弱性,   还有很多其他参数。没有   这个功能有多复杂   然而,它被浓缩为   一个代表该数字的数字   董事会职位的“善良”。

Source

要构建自己的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的一个很好的例子