Пример #1
0
        /// <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>();
            }
        }
Пример #2
0
        /// <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]);
            }
        }
Пример #3
0
 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.");
 }
Пример #4
0
 public Croupier()
 {
     Mano         = null;
     MazoReparto  = new Mazo();
     MazoRetirada = new Mazo();
 }
Пример #5
0
        /// <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);
            }
        }