C# 如何连接网站中的两个人
有一个叫做“冗长”的游戏(这是一个有目的的游戏),它就在这个链接上C# 如何连接网站中的两个人,c#,asp.net,web,C#,Asp.net,Web,有一个叫做“冗长”的游戏(这是一个有目的的游戏),它就在这个链接上 www.gwap.com 在游戏中,他们随机将两名玩家连接在一起玩,游戏是玩家1应该向他的搭档(玩家2)描述一个单词,玩家2应该询问这个单词。 我正试图建立一个这样的网站,但我想知道 1-我如何随机连接两名玩家,让他们一起玩,尽管他们不是注册用户(他们只是网站的访客)? 2-如何让他们玩私人游戏,我的意思是每两个玩家都在玩自己的游戏 3-我需要使用什么?使用ASP.Net就足够了吗?我需要silverlight吗? 谢谢我想如果
www.gwap.com
在游戏中,他们随机将两名玩家连接在一起玩,游戏是玩家1应该向他的搭档(玩家2)描述一个单词,玩家2应该询问这个单词。
我正试图建立一个这样的网站,但我想知道
1-我如何随机连接两名玩家,让他们一起玩,尽管他们不是注册用户(他们只是网站的访客)?
2-如何让他们玩私人游戏,我的意思是每两个玩家都在玩自己的游戏
3-我需要使用什么?使用ASP.Net就足够了吗?我需要silverlight吗?
谢谢我想如果两个人访问你的网站,他们可以分别访问数据,独立玩游戏 要控制站点中并发用户的数量,您必须创建一个应用程序状态变量并向其存储两个选定的用户ID 每次用户尝试玩游戏时,您都必须检查其ID是否存在于应用程序状态变量中,如果存在,则允许他,否则不允许 当然,您必须编写大量的代码
这样你就可以做到这一点。据我所知,我们有两个逻辑实体: 游戏:涉及两名玩家之间的私人互动 玩家:网站的访问者(匿名) 我将从球员开始,因为这更容易。访问者登陆您的站点,需要(唯一地)识别他。最简单的解决方案是可以用作会话参数或会话cookie的Guid(我的建议)。Guid不是可为空的类型,因此任何32个零的Guid都将是未定义的Guid 有了引导访客,您需要一个键/值集合,将他们与游戏联系起来 情景1: 每位访客一次只能玩一场游戏。字典可以完成这项工作,可以很容易地追踪非玩家的访问者(game=未定义的Guid) 情景2: 每位访客可以同时成为多个游戏的玩家。字典是解决方案,但game=undefinedGuid将成为List.Count=0 现在让我们看看你能用游戏做些什么。首先,您可以使用guid来识别您的游戏。这意味着您的玩家字典将是场景1的字典或场景2的字典。显然,游戏需要一个键/值集合,比如说以字典的形式。GameDetails必须是一个包含必要信息的类,这些信息可以定义玩家之间的交互。在其他世界中,此类必须包括每个玩家的角色(角色1:提问者或角色2:猜测者)以及他们作为键/值集合交换的消息,其中键是玩家Guid,值是字符串消息 总结一下,您需要在global.asax中定义两个静态字典,一个用于玩家,一个用于游戏。您还需要类似的GameDetails类(基本概念实现):
class GameDatails
{
public Guid Role1{get;set;}//保存请求的播放机的Guid
public Guid Role2{get;set;}//保存猜测的玩家的Guid
public List Messages;//保存播放器/消息对
公开游戏详细信息(Guid角色1、Guid角色2)
{
this.Role1=Role1;
this.Role2=Role2;
this.Message=新列表();
}
}
添加和删除玩家与游戏一样简单(玩家连接到游戏)
你还可以做很多其他的事情(比如猜中的人退出,你随机分配另一个玩家继续等)
或多或少,这也是与私人聊天室进行asp.net聊天的方法。查找并检查一个简单asp.net聊天脚本的示例可能会对您有所帮助,请查看其逻辑和实现,并使其适应上述情况。此外,您可以扩展聊天脚本以支持私人聊天室,并拥有两个应用程序,而不是一个
不用说,asp.net对于您的项目来说已经足够了。您必须考虑的是,如果无法控制应用程序池的回收,您还需要一个持久层,否则可能会丢失字典
如果您需要更多帮助,请告诉我。客户端上的ASP.NET服务器端和Ajax(javascript)足以完成此任务 粗略地说,您希望将客户端设置为在给定的时间间隔内轮询服务器以获取信息。服务器将响应客户端随后发布的状态更新
class GameDatails
{
public Guid Role1 { get; set; } // holds the guid of the player who asks
public Guid Role2 { get; set; } // holds the guid of the player who guesses
public List<KeyValuePair<Guid, string>> Messages; // holds the player/message pairs
public GameDetails(Guid role1, Guid role2)
{
this.Role1 = role1;
this.Role2 = role2;
this.Message = new List<KeyValuePair<Guid, string>>();
}
}