如何在您的网站中连接两个人

Rub*_*uba 8 c# asp.net web

有一款名为Verbosity的游戏(它是一款有目的游戏),它位于此链接
www.gwap.com

在游戏中他们随机连接两个玩家互相玩,游戏是玩家1应该向他的伙伴(玩家2)描述一个单词,玩家2应该猜对话.
我正在尝试建立一个类似的网站,但我想知道
1-我如何能够随机连接两个玩家让他们一起玩,尽管他们不是注册用户(他们只是网站的访客)?
2-如何让他们在私人比赛中打球,我的意思是每两名球员都在玩自己的比赛?
3-我需要使用什么?使用ASP.Net是否足够?我需要银光吗?
谢谢

小智 3

根据我的理解,我们有两个逻辑实体:

\n\n

游戏:涉及两个玩家之间的私下互动

\n\n

玩家:网站的访问者(匿名)

\n\n

我将从玩家开始,因为它更容易。访问者登陆您的网站,需要(唯一)识别他的身份。最简单的解决方案是可以用作会话参数或会话 cookie 的 Guid(我的建议)。Guid 不是可为 null 的类型,因此任何 32 个零的 Guid 都将是我们未定义的 Guid。

\n\n

有了 GUID 访问者,您需要一个键/值集合来将他们连接到游戏。

\n\n

场景 1:\n每个访问者一次只能成为一场游戏的玩家。字典<玩家,游戏>可以完成这项工作,并且可以轻松追踪非玩家的访问者(游戏=未定义的Guid)

\n\n

场景 2:\n每个访问者可以同时成为多个游戏的玩家。Dictionary<player, List<game>> 是解决方案,但 game = undefinedGuid 将变为 List.Count = 0

\n\n

现在让\xe2\x80\x99s 看看你可以用游戏做什么。首先,您可以使用 GUID 来识别您的游戏。这意味着您的玩家字典将是场景 1 的 Dictionary<Guid, Guid> 或场景 2 的 Dictionary<Guid, List<Guild>> 。显然,您需要游戏的键/值集合,let\xe2\x80\ x99s以Dictionary<gameGuid, gameDetails>的形式表示。GameDetails 必须是一个包含可以定义玩家之间交互性的必要信息的类。在其他世界中,此类必须包含每个玩家的角色(角色 1:提问者或角色 2:猜测者)以及他们作为键/值集合交换的消息,其中键是玩家 Guid,值是一条字符串消息。

\n\n

总而言之,您需要在 global.asax 中定义两个静态字典,一个用于玩家,一个用于游戏。您还需要一个与此类似的 GameDetails 类(基本概念实现):

\n\n
class GameDatails\n{\n  public Guid Role1 { get; set; } // holds the guid of the player who asks\n  public Guid  Role2 { get; set; } // holds the guid of the player who guesses\n  public List<KeyValuePair<Guid, string>> Messages; // holds the player/message pairs\n  public GameDetails(Guid role1, Guid role2)\n  {\n    this.Role1 = role1;\n    this.Role2 = role2;\n    this.Message = new List<KeyValuePair<Guid, string>>();\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

添加和删​​除玩家和游戏一样简单(玩家连接到游戏)。

\n\n

您还可以做很多其他事情(即猜测的人退出,然后您随机分配另一位玩家继续等等)。

\n\n

或多或少这也是用 ASP.NET 进行私人房间聊天的方式。找到并检查一个简单的 ASP.NET 聊天脚本的良好示例,查看逻辑和实现并使其适应上述内容可能会对您有所帮助。此外,您还可以扩展聊天脚本以支持私人房间,并拥有两个应用程序而不是一个。

\n\n

不用说,asp.net 对于您的项目来说已经足够了。您必须考虑的是,如果您无法控制应用程序池回收,您还需要一个持久层,否则您可能会丢失字典。

\n\n

如果您需要更多帮助,请告诉我。

\n