制作处理密集型web代码(国际象棋引擎)

Making processing intensive web code (chess engine)

本文关键字:国际象棋 引擎 代码 web 处理 密集型      更新时间:2023-09-26

我在Processing(一种简化的Java语言)中制作了一些国际象棋引擎,并想在网站上制作一个。我猜JavaScript将是最明显的东西,但我想知道在我进入它之前是否还有其他选择。

我环顾四周,似乎C++可以以某种方式与web代码配合使用,但我从未这样做过,也不太了解它。有可能在JavaScript中进行低强度的绘图和C++中的移动生成吗?有更好的选择吗?

编辑:我用粗体显示处理(语言),以区分

如果您正在寻找一个跨浏览器的客户端解决方案,那么在查看器的浏览器中没有单一的跨浏览器方法可以使用C++。跨浏览器解决方案包括javascript(推荐)、java(在台式机上逐步淘汰,通常在移动设备上不可用)和Adobe Flash(在移动设备中不可用)。

如果你想把它全部放在客户端,我建议你用客户端javascript编写,并在webworker中尽可能多地进行处理,webworker是独立的执行线程。这些单独的线程可以进行任意多的计算,但需要使用消息传递与主javascript线程进行通信,以便实际修改DOM或与用户交互。


或者,作为一个浏览器web应用程序,你可以用C++或任何你想使用的服务器端语言在服务器上保留国际象棋逻辑,并使用客户端Ajax调用来要求服务器计算下一步行动。

这取决于您想要如何构建它。

如果你想让它在没有服务器端支持的情况下运行,那么你几乎只能使用JavaScript。(当然,您实际上可以托管现有的Java代码和库,这些代码和库可以作为Java小程序提供,也可以作为Flash或其他插件提供,但特别是在HTML 5等的情况下,重点是JavaScript。)

否则,您可以使用JavaScript实现UI和其他元素,并使用AJAX让它将繁重的处理通信/卸载到后端服务器。(此时,您基本上需要托管一个国际象棋引擎,以便在您的网站上使用。)

用您想要的任何语言编写国际象棋引擎。创建一个与国际象棋引擎通信的接口,或者更好地使用现有的标准国际象棋引擎接口。使用以下两个"标准"接口之一

http://en.wikipedia.org/wiki/Chess_Engine_Communication_Protocolhttp://en.wikipedia.org/wiki/Universal_Chess_Interface

一旦你彻底调试了你的国际象棋引擎并对它感到满意,你就可以把为它编写web UI的问题作为一个完全独立的问题来处理。您可以通过自己选择的中间层来完成国际象棋引擎服务器和网络服务器/网站之间的通信。其中一个选项是:

http://en.wikipedia.org/wiki/Ajax_(编程)

此外,如果您使用标准的国际象棋接口,您可以将自己的国际象棋引擎换成满足您选择的接口的任何第三方国际象棋引擎。