是否有任何国际象棋游戏API,纯粹用JavaScript编写?没有Flash!有人知道在国际象棋游戏中使用的算法(一般)吗?JavaScript中的国际象棋游戏
回答
如何做一个国际象棋的算法?:工作
什么棋计算机试图做的是 产生的板位置树5点 或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的。它还有一个游戏的工作版本,可供您试用并创建自己的所有必要资源。
一些有用的资源:
- First implementation of a chess engine in Javascript
- The Anatomy of Chess Programs,由Tony Marsland,是 象棋程序如何电流下工作一个很好的介绍。
- Chess Space
- Paul Verhelst - 问题和答案
- Bibliography on Minimax Algorithms(newer version)。
- Crafty是一个强大的程序 其源代码是免费提供的,而且对于国际象棋程序来说,它是可读的。
- Unfinished Work and Challenges to Chess Programmers
- Is there a perfect algorithm for Chess?这里讨论就这么
- How Computers Play Chess的最好的书,我发现后面描述象棋AI算法
的Computer Chess Blog理论记录了C#国际象棋引擎的创建。它不是JavaScript,但语法足够相似,可以很好地理解不同的国际象棋引擎组件。
此外,如果你想让你的国际象棋引擎启用网络,你可能要考虑使用C#和Silverlight GUI。与使用JavaScript相比,您将从.NET中获得更好的性能。正如你将会学到的,这将转化为更强大(更深入的搜索)国际象棋程序。一个很好的Silverlight国际象棋示例可以在GeeksWithChess.com
对于算法讨论,请尝试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引擎的开放书籍更大。
- 1. “跟随国际象棋”直播国际象棋游戏如何?
- 2. prolog的国际象棋游戏
- 3. Java在线国际象棋游戏
- 4. 国际象棋Java游戏错误
- 5. C#3D国际象棋游戏
- 6. Javascript:优化国际象棋游戏的数据结构
- 7. 国际象棋游戏,改变正在迭代的对象。
- 8. 面向对象的国际象棋游戏设计
- 9. 将图像插入国际象棋游戏中的代码c#
- 10. 如何在Android国际象棋游戏中制作动画
- 11. 在C中优化国际象棋游戏
- 12. iphone有很好的开源国际象棋游戏吗?
- 13. 如何使用BuffereImage进行国际象棋游戏
- 14. 这款国际象棋游戏如何实现?
- 15. 重新链接链表?国际象棋游戏
- 16. 自我项目:使用GUI创建国际象棋游戏
- 17. 帮助设计一个国际象棋游戏
- 18. 如何在C#中编写像游戏一样的国际象棋?
- 19. 爪哇国际象棋
- 20. 0x88国际象棋棋盘代表
- 21. 国际象棋棋盘代表 - 引擎
- 22. 国际象棋棋局职位
- 23. 记忆从内部到外部类的国际象棋游戏的坐标
- 24. 使用Javascript的简单国际象棋棋盘
- 25. 为局域网制作国际象棋游戏所需的帮助
- 26. 用Javascript创建一个二维棋盘游戏对象,用于棋局游戏
- 27. C中的国际象棋引擎
- 28. XNA中的国际象棋逻辑
- 29. 国际象棋游戏:分割错误错误。你能找到它吗?
- 30. 用Java编写国际象棋游戏,而gameOver布尔型不起作用
可能是一个不错的代码高尔夫问题(很短的实现) – 2010-01-13 08:29:08
http://javascript.internet.com/games/javascript-chess-with-cpu-oppo.html – 2010-01-13 08:31:46
一个令人惊讶的小的实现(1KB): http://js1k.com/2010-first/demo/435 – Christophe 2012-01-14 18:21:13