En mi entendimiento que tenemos dos entidades lógicas:
Juegos: involucrar a la interactividad entre los dos jugadores en privado
Jugadores: Visitantes (anónimo) de un sitio web
Voy a comenzar con jugadores porque es mas fácil. Un visitante aterriza en su sitio y existe la necesidad de (única) identificarlo. La solución más fácil es un Guid que se puede usar como un parámetro de sesión o como una cookie de sesión (mi sugerencia). Guid no es un tipo anulable, por lo que cualquier Guid de 32 ceros será nuestro Guid indefinido.
Al tener sus visitantes guiados, necesita una colección de clave/valor que los conectará a los juegos.
Escenario 1: Cada visitante puede ser un jugador para un solo juego a la vez. Un diccionario < jugador, juego> puede hacer el trabajo y los visitantes que no son jugadores pueden ser fácilmente rastreados (juego = indefinido Guid)
Escenario 2: Cada visitante puede ser un jugador para muchos juegos al mismo tiempo. Un juego de diccionario <, juego List < >> es la solución pero juego = undefinedGuid se convertirá en List.Count = 0
Ahora veamos qué puedes hacer con los juegos. En primer lugar, puede usar GUID para identificar sus juegos. Esto significa que su diccionario de jugadores será Dictionary < Guid, Guid> para el escenario 1 o Dictionary < Guid, List < Guild >> para el escenario 2. Obviamente necesitará una colección de clave/valor para los juegos, digamos en forma de Diccionario < gameGuid, juegoDetalles>. GameDetails debe ser una clase que contenga la información necesaria que pueda definir la interactividad entre los jugadores. En otros mundos, esta clase debe incluir el rol de cada jugador (rol 1: el que pregunta o rol 2: el que está adivinando) y los mensajes que intercambian como una colección clave/valor donde la clave es el jugador Guid y el valor es un mensaje de cadena.
Para resumir necesitarás dos diccionarios estáticos definidos en tu global.asax, uno para los jugadores y otro para los juegos. También necesitará una clase GameDetails similar a este (implementación básica concepto):
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>>();
}
}
adición y eliminación de los jugadores es fácil, así como juegos (los jugadores están conectados a los juegos).
Hay muchas otras cosas que puede hacer (es decir, el que adivina deja de fumar y asigna aleatoriamente otro jugador para continuar, etc.).
Más o menos esta es también la manera de hacer un chat de asp.net con salas privadas. Puede ser útil para usted encontrar y verificar una buena muestra de una secuencia de comandos simple de chat asp.net, ver la lógica y la implementación y adaptarlas a lo anterior. Además, puede ampliar la secuencia de comandos de chat para admitir habitaciones privadas y tener dos aplicaciones en lugar de una.
No hace falta decir que asp.net es más que suficiente para su proyecto.Lo que debe tener en cuenta es que si no puede controlar el reciclaje de su grupo de aplicaciones, también necesitará una capa de persistencia, de lo contrario, puede perder sus diccionarios.
Si necesita más ayuda solo hágamelo saber.
La pregunta es demasiado amplia. Realmente necesitas reducirlo. – Candide
Debe agregar algo más de información, como las capas que está utilizando en su aplicación. ¿Vas a usar Silverlight? o simple asp.net? – Aphelion
Honestamente, no sé si debería usar Silverlight o no. Es por eso que estoy preguntando qué necesitaría, y ¿es suficiente usar ASP.Net? – Ruba