用于浏览器游戏客户端的 c# Web 服务器的概念

concept for c# web server for browser game client

作为一名IT专业的学生,​​我接到了制作四连胜游戏的任务。 我的任务是编写一个简单的 c# web 服务器来侦听 http 请求,这样 2 个玩家就可以互相对战,一个在 c#c 形式,一个在网站上。

但我对这样的事情如何运作感到困惑。我们将有一个 Web 客户端,它只是游戏的设计,并将从 C# 代码中获取它的行为和数据。 c# 服务器应该使用 httpListener、httpListenerrequest 和 httpListenerContext 类.

我不确定如何做这样的事情。任何有关如何开始此任务的帮助将不胜感激,因为我不清楚如何完成它。

问候, 杜内茨

您将需要六个项目

1: winforms - 连接 4 个客户端

2: Web 应用程序 - 连接 4 个客户端

3: winforms - connect 4 server (加分使其成为 windows 服务或 web api 项目)

4: class 库 - 连接四个游戏逻辑和模型

5: 测试项目 4

6: class lib - 连接到 3

的客户端代码

先做 class 库。将所有模型和游戏逻辑放在这里公开一个 class,其中包含开始游戏、移动和计算是否有人获胜的方法。为此 class.

创建一个界面

在测试项目中编写测试以确保您拥有正确的基本游戏逻辑,您可以开始游戏并进行移动等一切正常

然后转到服务器。这应该引用 class 库并只处理 http 侦听和响应等。您需要将模型对象的连接处理和反序列化放在这里,但本质上您只是公开与 class 库

现在做六个。再次引用模型 class 库并继承相同的接口,但这次不是开始游戏或使用游戏逻辑移动,而是连接到服务器并调用它的开始和游戏,移动等。您将不得不再次将响应反序列化为模型对象。

现在执行 1 和 2。它们的相似之处在于它们将引用模型 class 库和客户端代码库。当然,您将不得不以不同的方式向用户展示棋盘,但是当他们采取行动、开始游戏等时,您只需调用客户端 class 库中的方法,服务器将执行逻辑并 return 结果

为了加分,在任何事情上都使用异步任务方法

如果它不起作用,请为您的服务器编写集成测试。这些将节省您数小时的工作时间,看看是客户端还是服务器有问题

另外一个小技巧,使用Microsoft unity framework进行依赖注入