使用 HTML/JS/AJAX/Java 开发基于浏览器的多人纸牌游戏

Ste*_*err 4 javascript java jquery

我目前有一个用 Java 开发和运行的多人纸牌游戏,它正在控制台中运行。该游戏在形式上类似于桥牌和黑桃,但没有竞标过程。这是一个四人游戏,玩家轮流打一张牌。

我目前正在努力将其转换为基于浏览器的 web 应用程序,并添加 Spring MVC,并使用 HTML、JavaScript 和 AJAX 进行 UI 和与后端的通信。我有一个很好的想法,我想采取的方法让这个方法在单人游戏中对抗 AI,允许用户玩他们的卡片并使用 AJAX 调用从服务器获取接下来的三场比赛。

然而,我想知道我需要采取什么样的方法才能成为多人游戏。我看过一些我不熟悉的“套接字编程”的参考资料,但这些参考资料似乎围绕 Java 小程序,而不是基于浏览器的应用程序。

基本上,我正在寻找一种方法来确保当用户开始游戏并且其他人加入时,我如何确保他们连接到同一个游戏,并且能够看到彼此的游戏?在我为单人游戏完全开发 UI 之前,我现在问这个问题,因为我想避免完全重新设计以支持多人游戏功能。

Joe*_*Joe 6

由于您正在创建多人游戏,因此您需要至少有一台服务器供您的客户端连接。由于您希望基于此浏览器,您很可能需要自己的服务器(而不是让其中一个客户端成为服务器)。当用户加入游戏时,它会登录到该用户所在的服务器上。当玩家执行一个动作时,服务器会处理该动作,然后向连接到该房间的每个其他客户端发送通知。此时客户端 UI 会更新。

过去,您无法使用纯 HTML/JavaScript 执行此操作,因为您无法打开套接字。这意味着,服务器无法通知客户端。但是在 HTML5 中,您应该能够使用 WebSockets 来实现您在中间的服务器上所做的事情。WebSocket API

但是,如果您不想使用 HTML5 WebSockets,还有一种技术可以模仿 JavaScript 中的 Sockets。也就是说,服务器可以与客户端通话。这种技术称为长轮询。客户端向服务器发送请求更新请求,如果没有可用更新,服务器会保留该请求,直到有更新可用,然后将其发送回客户端,此时他们会发出另一个更新请求。简单的长轮询示例

另一种选择,如果您非常熟悉 Java,您可能希望查看Google Web Toolkit。GWT 是 Java 的一个子集,它被编译成用于前端的 HTML 和 JavaScript,如果需要,可以创建一个服务器端 java 可执行文件,您可以将其与 TomCat 或其他 Web 服务一起使用。在此选项中,您有一些库允许您编写将被编译为长轮询 JavaScript 的套接字样式代码。

祝你好运!