// Clients' request parsing method public void ReceiveRequests(TcpClient client) { NetworkStream dataStream; int requestSize; string clientAddress = (client.Client.RemoteEndPoint).ToString(); string request; string response; byte[] requestBuffer; byte[] responseBuffer; Jugador jugador = new Jugador(); jugador.Client = client; try { while (true) { // Parse client's received data dataStream = client.GetStream(); requestBuffer = new byte[2048]; requestSize = dataStream.Read(requestBuffer, 0, requestBuffer.Length); request = Encoding.ASCII.GetString(requestBuffer, 0, requestSize); Console.WriteLine("Receiving client's data..."); Console.WriteLine(String.Format("Received data: {0}", request)); // Encode and send server's response response = string.Empty; var deserializedRequest = JsonConvert.DeserializeObject <dynamic>(request); // TODO: Definir mas metodos del servidor switch ((string)deserializedRequest.method) { case "login": { try { String user = (string)deserializedRequest.user; AD.authentication(user, (string)deserializedRequest.password); response = "{\"success\":true}"; if (controller.Jugadores.Count == 4) { foreach (Jugador jugador2 in controller.Jugadores) { if (user == jugador2.Nombre) { jugador2.EnLinea = true; jugador2.Client = client; response = "{\"success\":true}"; break; } else { response = "{\"success\":false}"; } } } else { jugador.Nombre = (string)deserializedRequest.user; jugador.EnLinea = true; controller.Jugadores.Add(jugador); } if (controller.Jugadores.Count == 4 && controller.PartidaIniciada != true) { controller.Inicio(); } } catch (Exception e) { response = "{\"success\":false}"; Console.WriteLine(e.Message.ToString()); } responseBuffer = Encoding.ASCII.GetBytes(response); dataStream.Write(responseBuffer, 0, responseBuffer.Length); Console.WriteLine(response); dataStream.Flush(); SendGameInformation(); break; } case "raise": { int apuesta = deserializedRequest.quantity; controller.Raise(jugador.Nombre, apuesta); SendGameInformation(); } break; case "create": { try { String user = (string)deserializedRequest.user; String password = (string)deserializedRequest.password; foreach (Jugador jugadorCrear in controller.Jugadores) { if (jugadorCrear.Nombre == user) { throw new Exception("Este usuario ya est� logueado."); } } AD.createUser(user, user, password); response = "{\"success\":true}"; } catch (Exception e) { response = "{\"success\":false}"; Console.WriteLine(e.Message.ToString()); } responseBuffer = Encoding.ASCII.GetBytes(response); dataStream.Write(responseBuffer, 0, responseBuffer.Length); Console.WriteLine(response); dataStream.Flush(); break; } case "pass": { controller.Pass(jugador.Nombre); SendGameInformation(); } break; case "fold": { controller.Fold(jugador.Nombre); SendGameInformation(); } break; case "call": { controller.Call(jugador.Nombre); SendGameInformation(); } break; case "disconnect": { while (true) { if (controller.Turno == jugador.Nombre) { jugador.EnLinea = false; controller.Fold(jugador.Nombre); SendGameInformation(); break; } } } break; default: response = "{\"success\":false}"; break; } } } catch (Exception e) { Console.WriteLine(String.Format("{0} has disconnected", jugador.Nombre)); Console.WriteLine(String.Format("{0} has disconnected", clientAddress)); } }
public void fullHouse(Jugador jugador) { if (jugador.PuntajeMano == 4) { int contador1 = 0; int contador2 = 0; if (jugador.Mano[0].Leyenda.Equals(jugador.Mano[1].Leyenda)) { contador1 = 2; foreach (Carta c in CartasComunes) { if (c.Leyenda.Equals(jugador.Mano[0].Leyenda)) { contador1 = 1; break; } } if (contador1 > 2) { foreach (Carta c in CartasComunes) { if (!c.Leyenda.Equals(jugador.Mano[0].Leyenda)) { contador2 = 0; foreach (Carta k in CartasComunes) { if (k.Leyenda.Equals(c.Leyenda)) { contador2 += 1; } } if (contador2 >= 2 && contador1 >= 3) { jugador.PuntajeMano = 7; } break; } } } else { foreach (Carta c in CartasComunes) { if (!c.Leyenda.Equals(jugador.Mano[0].Leyenda)) { contador2 = 0; foreach (Carta k in CartasComunes) { if (k.Leyenda.Equals(c.Leyenda)) { contador2 += 1; } } if (contador2 >= 3 && contador1 >= 2) { jugador.PuntajeMano = 7; } break; } } } } else { contador1 = 1; contador2 = 2; foreach (Carta c in CartasComunes) { if (c.Leyenda.Equals(jugador.Mano[0].Leyenda)) { contador1 += 1; } else if (c.Leyenda.Equals(jugador.Mano[1].Leyenda)) { contador2 += 1; } } if (contador1 >= 2 && contador2 >= 3 || contador1 >= 3 && contador2 >= 2) { jugador.PuntajeMano = 7; } } } }