是否有纯粹用JavaScript编写的国际象棋游戏API?没有闪光灯!有人知道国际象棋游戏中使用的算法吗?
国际象棋算法如何工作?:
一台国际象棋计算机试图做的是在未来产生五,十或二十步的棋盘位置树。假设任何板位都有大约20个可能的移动,那么一个五层树包含3,200,000个板位。一个10层的树包含大约10,000,000,000,000(10万亿)个职位。计算机可以计算的树的深度由计算机玩游戏的速度控制。最快的象棋计算机每秒可以生成和评估数百万个棋盘位置。 生成树后,计算机需要“评估板的位置”。也就是说,计算机必须查看板上的零件,并确定零件的排列是“好”还是“坏”。它的实现方式是使用评估函数。最简单的功能可能只是计算每边的件数。如果计算机处于白色状态,并且某个板位上有11个白色棋子和9个黑色棋子,则最简单的评估功能可能是: 11 - 9 = 2 显然,对于国际象棋来说,公式太简单了,因为有些棋子比其他棋子更有价值。因此,公式可以对每种类型的零件施加权重。正如程序员考虑的那样,他或她通过添加诸如棋盘位置,中心控制,国王检查的脆弱性,对手皇后的脆弱性以及大量其他参数之类的东西,使评估功能变得越来越复杂。但是,无论功能变得多么复杂,它都被压缩为一个数字,代表该板位置的“好”。
一台国际象棋计算机试图做的是在未来产生五,十或二十步的棋盘位置树。假设任何板位都有大约20个可能的移动,那么一个五层树包含3,200,000个板位。一个10层的树包含大约10,000,000,000,000(10万亿)个职位。计算机可以计算的树的深度由计算机玩游戏的速度控制。最快的象棋计算机每秒可以生成和评估数百万个棋盘位置。
生成树后,计算机需要“评估板的位置”。也就是说,计算机必须查看板上的零件,并确定零件的排列是“好”还是“坏”。它的实现方式是使用评估函数。最简单的功能可能只是计算每边的件数。如果计算机处于白色状态,并且某个板位上有11个白色棋子和9个黑色棋子,则最简单的评估功能可能是:
11 - 9 = 2
显然,对于国际象棋来说,公式太简单了,因为有些棋子比其他棋子更有价值。因此,公式可以对每种类型的零件施加权重。正如程序员考虑的那样,他或她通过添加诸如棋盘位置,中心控制,国王检查的脆弱性,对手皇后的脆弱性以及大量其他参数之类的东西,使评估功能变得越来越复杂。但是,无论功能变得多么复杂,它都被压缩为一个数字,代表该板位置的“好”。
来源。
要构建自己的能够在基本级别下象棋的javascript“引擎”,请使用CPU oppo逐步检查Javascript Chess
如果向下滚动它包含此的源代码,必须说非常有限,纯粹基于javascript的国际象棋引擎。它还具有可以试用的游戏版本,以及用于构建自己的所有必要资源。
一些有用的资源: