public void reemplazarJugador(int pos, jugador c) { if (pos < Cant) { Vec[pos] = c; } }
public bool agregarJugador(jugador jug) { if (Cant < Tam) { Vec[Cant++] = jug; return(true); } return(false); }
public int cartaAdicional(jugador jugador) { int cartaE = -1; //Inicializar en algun momento los contenedores de los jugadores if (!(jugador.pasoDe21())) { cartaE = darCarta(jugador.obtenerMano()); jugador.toString(); if (jugador.pasoDe21()) { jugador.perdio(); } } return(cartaE); }
public jugador jugadorEspecifico(string idJugador) { jugador j = null; if (VerificarJugador(idJugador)) { for (int i = 0; i < Cant; i++) { if (Vec[i].getId() == idJugador) { j = Vec[i]; } } } return(j); }
//La coleccion de nombres que le llega debe ser del activeD o de la interfaz //Si es de la interfaz debe haber alguna clase o forma para agregar los nuevos //jugadores public Juego(coleccionJugador nombres) { //Coleccion de jugadores con la lista que le llega... jugadores = new coleccionJugador(nombres.obtenerCantidad()); for (int i = 0; i < nombres.obtenerCantidad(); i++) { jugador j = nombres.obtenerJugador(i); jugadores.agregarJugador(j); } //Se crea el mazo m_baraja = new Mazo(); //Se crea el jugador casa... m_casa = new Casa("Casa"); //Se llena el mazo m_baraja.llenarMazo(); //Se baraja el mazo m_baraja.barajar(); //Se prepara el mazo general el Juego }
//data manager static void DataManager(Packet p) { switch (p.packetType) { case Packet.PacketType.Chat: foreach (ClientData c in _clients) { c.clientSocket.Send(p.ToBytes()); } break; case Packet.PacketType.Mensaje: foreach (ClientData c in _clients) { c.clientSocket.Send(p.ToBytes()); } break; case Packet.PacketType.autentificar: if (cj.VerificarJugador(p.clave)) //Si existe en el juego { if (game.getJugadores().obtenerCantidad() < 7 && (!bloquearJuego)) { game.getJugadores().agregarJugador(new jugador(p.nombre, p.clave)); p.packetType = Packet.PacketType.darAcceso; p.estado = "Acceso aprobado"; Console.WriteLine("Jugadores actuales:"); game.getJugadores().imprimirColeccion(); Console.WriteLine("\n"); } else { listaEspera.agregarJugador(new jugador(p.nombre, p.clave)); Console.WriteLine("Jugador en espera: " + p.nombre); p.packetType = Packet.PacketType.enEspera; p.estado = "Ha sido puesta en lista de espera...\nEsperando...."; } } else { p.packetType = Packet.PacketType.denegarAcceso; p.estado = "Acceso denegado"; } foreach (ClientData c in _clients) { c.clientSocket.Send(p.ToBytes()); } Console.WriteLine("Estado de acceso del jugador recien agregado: " + p.estado); break; case Packet.PacketType.registrar: if (game.getJugadores().obtenerCantidad() < 7 && (!bloquearJuego)) { game.getJugadores().agregarJugador(new jugador(p.nombre, p.clave)); p.packetType = Packet.PacketType.darAcceso; p.estado = "Acceso aprobado"; Console.WriteLine("Jugadores actuales:"); game.getJugadores().imprimirColeccion(); Console.WriteLine("\n"); } else { //Se agrega a la lista de espera listaEspera.agregarJugador(new jugador(p.nombre, p.clave)); Console.WriteLine("Jugador en espera: " + p.nombre); p.packetType = Packet.PacketType.enEspera; p.estado = "Ha sido puesta en lista de espera...\nEsperando...."; } foreach (ClientData c in _clients) { c.clientSocket.Send(p.ToBytes()); } Console.WriteLine("Estado de acceso de registro: " + p.estado); break; case Packet.PacketType.iniciarJuego: //Se recibe la señal de iniciar juego del jugador bloquearJuego = true; //No acepta más jugadores en el juego //repartir primeras 2 cartas a todos los jugadores p.cartaCasa1 = game.getBaraja().darCarta(game.getCasa().obtenerMano()); p.cartaCasa2 = game.getBaraja().darCarta(game.getCasa().obtenerMano()); for (int i = 0; i < game.getJugadores().cantidadJugadores(); i++) { p.packetType = Packet.PacketType.primerasCartas; p.carta1 = game.getBaraja().darCarta(game.getJugadores().obtenerJugador(i).obtenerMano()); p.carta2 = game.getBaraja().darCarta(game.getJugadores().obtenerJugador(i).obtenerMano()); p.nombre = game.getJugadores().obtenerJugador(i).getNombre();//obtiene el nombre del jugador p.packetType = Packet.PacketType.iniciarJuego; Console.WriteLine("Asignar-> Jugador: " + p.nombre + ", C1: " + p.carta1 + ", C2: " + p.carta2); foreach (ClientData c in _clients) { c.clientSocket.Send(p.ToBytes()); } } if (numTurno < game.getJugadores().obtenerCantidad()) { p.packetType = Packet.PacketType.comunicarTurno; //Comunica el primer turno p.turno = game.getJugadores().obtenerJugador(numTurno).getNombre(); Console.WriteLine("Turno de jugador: " + p.turno); numTurno++; //Va al turno del jugador 0 foreach (ClientData c in _clients) { c.clientSocket.Send(p.ToBytes()); } //Comunica el primer turno } break; //Envia todas las primeras dos cartas a todos los jugadores identificados con el nombre case Packet.PacketType.pedirCarta: string idJugador = p.id; int j = game.getJugadores().posJugadorEspecifico(idJugador);//Busca posicion del jugador if (j != -1) { p.numeroCarta = game.getBaraja().cartaAdicional(game.getJugadores().obtenerJugador(j)); //Console.WriteLine("Carta pedida: " + p.numeroCarta);//Imprimo la carta pedido } if (p.numeroCarta != -1) { //Si aun no se ha pasado de 21 p.packetType = Packet.PacketType.darCarta; //Da la carta al jugador foreach (ClientData c in _clients) { c.clientSocket.Send(p.ToBytes()); } } else { //Pasa al jugador siguiente numTurno++; if (numTurno < game.getJugadores().obtenerCantidad()) { p.packetType = Packet.PacketType.comunicarTurno; p.turno = game.getJugadores().obtenerJugador(numTurno).getNombre(); foreach (ClientData c in _clients) { c.clientSocket.Send(p.ToBytes()); } } else { //Turno de jugar la casa y terminar el juego int aux = game.getBaraja().cartaAdicionalCasa(game.getCasa()); while (aux != -1) { p.numeroCarta = aux; p.packetType = Packet.PacketType.turnoCasa; //Pasa el numero de carta adicional de la casa a los clientes foreach (ClientData c in _clients) { c.clientSocket.Send(p.ToBytes()); } aux = game.getBaraja().cartaAdicionalCasa(game.getCasa()); //Después de enviar todos los valores de la casa, hay que hacer la comparación } p.packetType = Packet.PacketType.casaAcabo; foreach (ClientData c in _clients) { c.clientSocket.Send(p.ToBytes()); } //Anuncia los ganadores y las cartas que obtuvo la casa //Actualiza las apuestas } } Console.WriteLine("Turno de jugador: " + p.turno); break; case Packet.PacketType.quedarse: //Acá se tacha al jugador como que ya se quedó // ...... //Comunica el turno del siguiente jugador if (numTurno < game.getJugadores().obtenerCantidad()) { p.packetType = Packet.PacketType.comunicarTurno; //Comunica el primer turno p.turno = game.getJugadores().obtenerJugador(numTurno).getNombre(); Console.WriteLine("Turno de jugador: " + p.turno); numTurno++; //Guarda el turno del proximo jugador foreach (ClientData c in _clients) { c.clientSocket.Send(p.ToBytes()); } //Comunica el siguiente turno //DataManager(p);//Pasa a comunicarSiguiente turno } else { //Turno de jugar la casa y terminar el juego int aux = game.getBaraja().cartaAdicionalCasa(game.getCasa()); while (aux != -1) { p.numeroCarta = aux; p.packetType = Packet.PacketType.turnoCasa; //Pasa el numero de carta adicional de la casa a los clientes foreach (ClientData c in _clients) { c.clientSocket.Send(p.ToBytes()); } aux = game.getBaraja().cartaAdicionalCasa(game.getCasa()); //Después de enviar todos los valores de la casa, hay que hacer la comparación } p.packetType = Packet.PacketType.casaAcabo; numTurno = 0; //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if (game.getCasa().pasoDe21()) { for (int i = 0; i < game.getJugadores().obtenerCantidad(); ++i) { if (!(game.getJugadores().obtenerJugador(i).pasoDe21())) { game.getJugadores().obtenerJugador(i).gana(); p.estado = "Ganador"; } else { //Casa y jugador pasaron de 21 game.getJugadores().obtenerJugador(i).pierde(); p.estado = "Perdedor"; } } } else { for (int i = 0; i < game.getJugadores().obtenerCantidad(); ++i) { if (!game.getJugadores().obtenerJugador(i).pasoDe21()) { if (game.getJugadores().obtenerJugador(i).obtenerMano().ObtenerTotal() > game.getCasa().obtenerMano().ObtenerTotal()) { game.getJugadores().obtenerJugador(i).gana(); p.estado = "Ganador"; } else if (game.getJugadores().obtenerJugador(i).obtenerMano().ObtenerTotal() < game.getCasa().obtenerMano().ObtenerTotal()) { // ganador(IdJugador, 1 -> perdió, saldoActualizado); //Se verifica si el saldo es 0 entonces hay que desconectar el socket de ese jugador game.getJugadores().obtenerJugador(i).pierde(); p.estado = "Perdedor"; } else { // ganador(IdJugador, 2-> push, saldoActualizado); //Se verifica también el saldo game.getJugadores().obtenerJugador(i).push(); p.estado = "Push"; } } p.id = game.getJugadores().obtenerJugador(i).getId(); p.nombre = game.getJugadores().obtenerJugador(i).getNombre(); foreach (ClientData c in _clients) { c.clientSocket.Send(p.ToBytes()); } //Anuncia los ganadores y las cartas que obtuvo la casa //Actualiza las apuestas //Envia mensaje } } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //Anuncia los ganadores y las cartas que obtuvo la casa //Actualiza las apuestas } break; //Si el tipo es de autentificacion se add a la lista de sockets //una vez autentificado y se crea un nuevo jugador asociado a //ese id. case Packet.PacketType.salir: Console.WriteLine("**************************************"); Console.WriteLine("Id recibido: " + p.id); game.getJugadores().imprimirColeccion(); game.getJugadores().eliminarJugador(p.id); Console.WriteLine("- - - - - - - - - - - - - - - - - - - -"); game.getJugadores().imprimirColeccion(); Console.WriteLine("**************************************"); bloquearJuego = false; if (listaEspera.obtenerCantidad() > 0) { jugador jug = listaEspera.obtenerJugador(0); listaEspera.eliminarJugador(jug.getId()); //Sale de la lista de espera game.getJugadores().agregarJugador(jug); //Entra al juego p.packetType = Packet.PacketType.darAcceso; p.estado = "Acceso aprobado"; Console.WriteLine("Jugadores actuales:"); game.getJugadores().imprimirColeccion(); Console.WriteLine("\n"); //Envia el paquete con el acceso foreach (ClientData c in _clients) { c.clientSocket.Send(p.ToBytes()); } Console.WriteLine("Estado de acceso de registro: " + p.estado); } break; case Packet.PacketType.seguir: Console.WriteLine("Bien! El jugador " + p.nombre + " va a seguir jugando!"); p.packetType = Packet.PacketType.darAcceso; p.estado = "Acceso aprobado"; Console.WriteLine("Jugadores actuales:"); game.getJugadores().imprimirColeccion(); Console.WriteLine("\n"); foreach (ClientData c in _clients) { c.clientSocket.Send(p.ToBytes()); } Console.WriteLine("Estado de acceso de registro: " + p.estado); break; } }