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

时间:2012-11-05 17:33:56

标签: java javascript jquery

我目前有一个多人卡片游戏开发并使用Java工作,它正在控制台中工作。该游戏的格式类似于Bridge和Spades,减去了出价过程。这是一个四人游戏,玩家轮流玩牌。

我目前正在努力将其转换为基于浏览器的webapp,并且正在添加Spring MVC,并使用HTML,JavaScript和AJAX进行UI以及与后端的通信。我很清楚我想要让这个单人游戏对抗AI的方法,允许用户玩他们的卡并使用AJAX调用从服务器获得接下来的三个游戏。

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

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

1 个答案:

答案 0 :(得分:4)

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

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

但是,如果您不想使用HTML5 WebSockets,还有另一种在JavaScript中模仿套接字的技术。也就是说,服务器可以与客户端通信。这种技术称为长轮询。客户端向服务器发送请求更新的请求,如果没有可用更新,则服务器保留请求直到更新可用并将其发送回客户端,此时他们发出另一个更新请求。 Simple Long Polling Example

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

祝你好运!