我在Processing(一种简化的 Java 语言)中制作了一些国际象棋引擎,并想在网站上制作一个。我猜 JavaScript 将是最明显的东西,但我想知道在我进入它之前是否还有其他选择。我从来没有为网络制作过处理密集型的东西。
我环顾四周,似乎可以使 C++ 以某种方式与 Web 代码一起使用,但我从未这样做过,也不太了解它。是否可以做一些低强度的事情,比如在 JavaScript 中绘图和在 C++ 中生成移动?有更好的选择吗?
编辑:我将处理(语言)以粗体表示以区分它
我在Processing(一种简化的 Java 语言)中制作了一些国际象棋引擎,并想在网站上制作一个。我猜 JavaScript 将是最明显的东西,但我想知道在我进入它之前是否还有其他选择。我从来没有为网络制作过处理密集型的东西。
我环顾四周,似乎可以使 C++ 以某种方式与 Web 代码一起使用,但我从未这样做过,也不太了解它。是否可以做一些低强度的事情,比如在 JavaScript 中绘图和在 C++ 中生成移动?有更好的选择吗?
编辑:我将处理(语言)以粗体表示以区分它
这取决于您想如何构建它。
如果你想让它在没有服务器端支持的情况下运行,你将非常受限于 JavaScript。(当然,您实际上可以托管现有的 Java 代码和库,可以作为 Java 小程序使用 - 或 Flash 或其他插件中的东西 - 但特别是考虑到 HTML 5 等,重点是 JavaScript。)
否则,您可以使用 JavaScript 实现 UI 和其他元素,并使用 AJAX 让它与后端服务器进行通信/卸载繁重的处理。(此时,您基本上需要托管一个国际象棋引擎以供您的网站使用。)
如果您正在寻找跨浏览器客户端解决方案,那么没有单一的跨浏览器方式可以在查看器的浏览器中使用 C++。跨浏览器解决方案包括 javascript(推荐)、java(在台式机上逐步淘汰,通常在移动设备上不可用)和 Adobe Flash(在移动设备上不可用)。
如果您想要全部在客户端,我建议您使用客户端 javascript 编写并在作为单独执行线程的 webworkers 中进行尽可能多的处理。这些单独的线程可以根据需要进行尽可能多的计算,但需要使用消息传递与主 javascript 线程进行通信,以便实际修改 DOM 或与用户交互。
或者,作为浏览器 Web 应用程序,您可以将国际象棋逻辑保存在 C++ 或任何您想使用的服务器端语言中,并使用客户端 Ajax 调用请求服务器计算下一步。
用您想要的任何语言编写国际象棋引擎。创建一个与您的国际象棋引擎通信的接口,或者更好地使用现有的标准国际象棋引擎接口。使用以下两个“标准”接口之一
http://en.wikipedia.org/wiki/Chess_Engine_Communication_Protocol http://en.wikipedia.org/wiki/Universal_Chess_Interface
一旦您彻底调试了您的国际象棋引擎并对其感到满意,您就可以将为其编写 Web UI 的问题作为一个完全独立的问题来处理。您可以通过您选择的中间层完成国际象棋引擎服务器和网络服务器/网站之间的通信。一种这样的选择是:
http://en.wikipedia.org/wiki/Ajax_(编程)
此外,如果您使用标准国际象棋界面,您可以将自己的国际象棋引擎换成满足您选择的界面的任何第三方国际象棋引擎。