/// <summary> /// Esta función inicializa las clases. /// Abre una escucha en el puerto 5555 y setea el timer para chequear el buffer. /// Asigna un evento referenciando al método ObjetoRecibido /// </summary> public TableroServidor() { InitializeComponent(); escuchar = new Escuchar(); enviar = new Enviar(); mazo = new Mazo(); escuchar.Start(5555); timerCheckBuffer.Start(); escuchar.objetoRecibido += new Escuchar.Recibido(ObjetoRecibido); listLog.Items.Insert(0, "Servidor iniciado."); panelReiniciarRanking.Parent = pictureBox1; panelReiniciarRanking.BackColor = Color.Transparent; Serializador serializador = new Serializador(); puertosJugadores = new Dictionary <string, int>(); try { dineroJugadores = serializador.Deserializar(); ActualizarLog("Ranking encontrado."); } catch { ActualizarLog("Ranking no encontrado, se creará uno nuevo."); dineroJugadores = new Dictionary <string, int>(); } }
/// <summary> /// Este método Actualiza el Dinero de los Jugadores según el resultado de la Ronda /// </summary> /// <param name="ganador"></param> private void ActualizarDineros(string ganador) { if (ganador != "") { if (ganador == nombresClientes[0]) { dineroJugadores[nombresClientes[0]] += 100; dineroJugadores[nombresClientes[1]] -= 100; ActualizarLog("Dinero de " + nombresClientes[1] + ": $" + dineroJugadores[nombresClientes[1]]); ActualizarLog("Dinero de " + nombresClientes[0] + ": $" + dineroJugadores[nombresClientes[0]]); EnviarDineros(nombresClientes[0], nombresClientes[1]); //Cliente 2 queda en bancarrota if (dineroJugadores[nombresClientes[1]] <= 0) { if (listLog.InvokeRequired) { listLog.Invoke(new MethodInvoker(delegate { listLog.Items.Clear(); })); } ActualizarLog("Partida Finalizada."); ActualizarLog("El cliente " + nombresClientes[1] + " quebró."); mazo = new Mazo(); conexionEstablecida = false; EnviarBancarrota(nombresClientes[1]); //lo quito de la lista de clientes, para que le den sus $500 iniciales //dineroJugadores.Remove(nombresClientes[0]); } } if (ganador == nombresClientes[1]) { dineroJugadores[nombresClientes[1]] += 100; dineroJugadores[nombresClientes[0]] -= 100; ActualizarLog("Dinero de " + nombresClientes[1] + ": $" + dineroJugadores[nombresClientes[1]]); ActualizarLog("Dinero de " + nombresClientes[0] + ": $" + dineroJugadores[nombresClientes[0]]); EnviarDineros(nombresClientes[0], nombresClientes[1]); //Cliente 1 queda en bancarrota if (dineroJugadores[nombresClientes[0]] <= 0) { if (listLog.InvokeRequired) { listLog.Invoke(new MethodInvoker(delegate { listLog.Items.Clear(); })); } ActualizarLog("Partida Finalizada."); ActualizarLog("El cliente " + nombresClientes[0] + " quebró."); mazo = new Mazo(); conexionEstablecida = false; EnviarBancarrota(nombresClientes[0]); //lo quito de la lista de clientes, para que le den sus $500 iniciales } } //ActualizarLog("Dinero de " + nombresClientes[1] + ": $" + dineroJugadores[nombresClientes[1]]); //ActualizarLog("Dinero de " + nombresClientes[0] + ": $" + dineroJugadores[nombresClientes[0]]); //EnviarDineros(nombresClientes[0], nombresClientes[1]); } }
public TableroServidor() { InitializeComponent(); escuchar = new Escuchar(); enviar = new Enviar(); mazo = new Mazo(); escuchar.Start(5555); timerCheckBuffer.Start(); escuchar.objetoRecibido += new Escuchar.Recibido(ObjetoRecibido); listLog.Items.Insert(0, "Servidor iniciado."); }
public Croupier() { Mano = null; MazoReparto = new Mazo(); MazoRetirada = new Mazo(); }
/// <summary> /// Al recibir un mensaje o petición por parte de los Clientes/Jugadores, se ejecuta este Método /// </summary> /// <param name="respuesta"></param> private void ObjetoRecibido(Respuesta respuesta) { string nombre = respuesta.nombre; //Conexion Inicial if (respuesta.puerto != 0 && respuesta.tipo == 3) { puertosClientes.Add(respuesta.puerto); nombresClientes.Add(nombre); try { puertosJugadores.Add(nombre, respuesta.puerto); } catch { } ActualizarLog("Cliente " + nombre + " encontrado en el puerto " + respuesta.puerto.ToString() + "."); //Aca debemos fijarnos en el ranking si ese cliente ya tiene historial, sino su //dinero va a ser $500 if (dineroJugadores.ContainsKey(nombre)) { respuesta.dinero = dineroJugadores[nombre]; } else { respuesta.dinero = 500; try { dineroJugadores.Add(respuesta.nombre, respuesta.dinero); } catch { } } ActualizarLog("Dinero de " + respuesta.nombre + ": " + respuesta.dinero); if (puertosClientes.Count == 1) { EnviarConexion(false); } if (puertosClientes.Count > 1 && conexionEstablecida == false) { EnviarConexion(true); EnviarNombres(nombresClientes[0], nombresClientes[1]); //Decidir quien empieza, vamos a darle el turno al ultimo que se conectó para hacerlo más sencillo EnviarTurno(respuesta.nombre); conexionEstablecida = true; EnviarDineros(nombresClientes[0], nombresClientes[1]); } } //Si ya están conectados los dos clientes se puede empezar a enviar cartas else if (puertosClientes.Count > 1) { if (respuesta.otra && respuesta.tipo == 3) { ActualizarLog("El cliente " + nombre + " pidió otra carta."); EnviarCarta(nombre); } else if (respuesta.tipo == 99) { ActualizarLog("El cliente " + nombre + " se plantó."); ActualizarLog("Puntos de " + nombre + ":" + respuesta.puntos); if (nombresClientes[0] == nombre) { puntosJugador1 = respuesta.puntos; } if (nombresClientes[1] == nombre) { puntosJugador2 = respuesta.puntos; } if (puntosJugador2 == 0 || puntosJugador1 == 0) { if (nombresClientes[0] == nombre) { EnviarTurno(nombresClientes[1]); } else { EnviarTurno(nombresClientes[0]); } } else { ActualizarLog("PUNTOS DE JUGADOR 1: " + puntosJugador1); ActualizarLog("PUNTOS JUGADOR 2: " + puntosJugador2); if (puntosJugador2 <= 21 && (puntosJugador2 > puntosJugador1 && puntosJugador1 < 21)) { ActualizarLog("Ganador: " + nombresClientes[1]); ganador = nombresClientes[1]; EnviarGanador(nombresClientes[1]); ActualizarDineros(ganador); } else if (puntosJugador2 <= 21 && puntosJugador1 > 21) { ActualizarLog("Ganador: " + nombresClientes[1]); ganador = nombresClientes[1]; EnviarGanador(nombresClientes[1]); ActualizarDineros(ganador); } else if (puntosJugador1 <= 21 && (puntosJugador1 > puntosJugador2 && puntosJugador2 < 21)) { ActualizarLog("Ganador: " + nombresClientes[0]); ganador = nombresClientes[0]; EnviarGanador(nombresClientes[0]); ActualizarDineros(ganador); } else if (puntosJugador1 <= 21 && puntosJugador2 > 21) { ActualizarLog("Ganador: " + nombresClientes[0]); ganador = nombresClientes[0]; EnviarGanador(nombresClientes[0]); ActualizarDineros(ganador); } else if (puntosJugador2 == puntosJugador1) { ActualizarLog("Empate."); EnviarGanador("Empate"); ganador = ""; ActualizarDineros(ganador); } else if (puntosJugador1 > 21 && puntosJugador2 > 21) { ActualizarLog("Ambos se pasaron de 21. Empate."); EnviarGanador("Empate"); ganador = ""; ActualizarDineros(ganador); } } } else if (respuesta.tipo == 101) { if (respuesta.nombre == nombresClientes[0]) { ACKJugador1 = true; } else { ACKJugador2 = true; } mazo = new Mazo(); if (ACKJugador1 == true && ACKJugador2 == true) { puntosJugador1 = 0; puntosJugador2 = 0; ActualizarLog("Nueva Ronda"); //Si no empataron, le mando el turno al ganador if (ganador != "") { EnviarTurno(ganador); } //Si empataron, le mando el turno al primer jugador else { EnviarTurno(nombresClientes[0]); } ganador = ""; ACKJugador1 = false; ACKJugador2 = false; } } } if (respuesta.tipo == 200) { if (listLog.InvokeRequired) { listLog.Invoke(new MethodInvoker(delegate { listLog.Items.Clear(); })); } ActualizarLog("Partida Finalizada."); ActualizarLog("El Cliente " + respuesta.nombre + " se desconectó."); mazo = new Mazo(); conexionEstablecida = false; EnviarAbandono(respuesta.nombre); conexionEstablecida = false; //ActualizarLog(puertosClientes.Count.ToString()); Serializador serializador = new Serializador(); serializador.Serialize(dineroJugadores); } if (respuesta.tipo == 999) { ActualizarLog("Cliente encontrado en el puerto " + respuesta.puerto.ToString() + "."); ActualizarLog("Solicitud de Ranking recibida."); EnviarRanking(respuesta.puerto); } }