Exemplo n.º 1
0
 /// <summary>
 /// Realiza el proceso para cambiar el turno. Verifica antes si el jugador que acaba de tirar no ha ganado. Y cambia la posición de los bonus si termino una ronda de turnos.
 /// </summary>
 /// <param name="nombreUsuario">
 /// Nombre del jugador que acaba de pasar su turno.
 /// </param>
 public void CambiarTurno(String nombreUsuario)
 {
     try {
         PartidaEnJuego = clientePartida.ObtenerPartida(PartidaEnJuego.Nombre);
         bonus          = false;
         if (PartidaEnJuego.Turno == PartidaEnJuego.JugadoresPartida.ElementAt(0).Value.Turno.NumeroTurno&& nombreUsuario.Equals(Jugador.NombreUsuario))
         {
             clientePartida.CambiarPosicionBonus(PartidaEnJuego.Nombre);
         }
         DispatcherTimer temporizadorMovimiento = new DispatcherTimer();
         temporizadorMovimiento.Interval = new TimeSpan(0, 0, 2);
         temporizadorMovimiento.Tick    += (a, b) => {
             temporizadorMovimiento.Stop();
             try {
                 if (!VerificarGanador(nombreUsuario))
                 {
                     SiguienteJugador();
                 }
                 else
                 {
                     validarConectadoPartida.Stop();
                     Resultados resultados = new Resultados(this, posicionJugadores);
                     resultados.ShowDialog();
                 }
             } catch (CommunicationException) {
                 EnviarMensajeError();
             }
         };
         temporizadorMovimiento.Start();
     } catch (CommunicationException) {
         EnviarMensajeError();
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// Constructor de la ventana Espera.
 /// </summary>
 /// <param name="jugador">
 /// Objeto jugador que se mandó desde el menú.
 /// </param>
 /// <param name="partida">
 /// Objeto partida que se mandó desde el menú.
 /// </param>
 /// /// <param name="clientePartida">
 /// Conexión con el servidor para acceder a los métodos que proporciona sobre las partidas.
 /// </param>
 /// /// <param name="clienteChat">
 /// Conexión con el servidor para acceder a los métodos que proporciona sobre el chat.
 /// </param>
 /// /// <param name="partidas">
 /// Objeto mensajes que implementa los métodos que reciben respuesta del servidor, sobre las partidas.
 /// </param>
 /// /// <param name="mensajes">
 /// Objeto mensajes que implementa los métodos que reciben respuesta del servidor, sobre el chat.
 /// </param>
 public Partida(ServiceSYE.Jugador jugador, ServiceSYE.Partida partida, ServiceSYE.PartidaClient clientePartida, ServiceSYE.ChatClient clienteChat, Partidas partidas, Mensajes mensajes)
 {
     InitializeComponent();
     this.Title          = this.Title + " - " + jugador.NombreUsuario;
     partidas.Partida    = this;
     mensajes.Partida    = this;
     this.Jugador        = jugador;
     this.clienteChat    = clienteChat;
     this.clientePartida = clientePartida;
     this.clienteJugador = new ServiceSYE.JugadorClient();
     try {
         this.PartidaEnJuego = clientePartida.ObtenerPartida(partida.Nombre);
         DispatcherTimer temporizadorInicio = new DispatcherTimer();
         temporizadorInicio.Interval = new TimeSpan(0, 0, 5);
         temporizadorInicio.Tick    += (a, b) => {
             temporizadorInicio.Stop();
             if (PartidaEnJuego.JugadoresPartida.ElementAt(0).Value.NombreUsuario.Equals(jugador.NombreUsuario))
             {
                 try {
                     clienteChat.EnviarMensajePartida("", PartidaEnJuego.Nombre, 1);
                 } catch (CommunicationException) {
                     EnviarMensajeError();
                 }
             }
         };
         temporizadorInicio.Start();
         CargarTablero();
         CargarBonus();
         this.Jugador = ObtenerTurno(PartidaEnJuego.JugadoresPartida, this.Jugador);
         EnviarMensajeTurnos();
         ValidarConectado();
     } catch (CommunicationException) {
         EnviarMensajeError();
     }
 }
Exemplo n.º 3
0
 /// <summary>
 /// Realiza el proceso para mover la ficha del jugador.
 /// </summary>
 /// <param name="nombreUsuario">
 /// Nombre del jugador del que se moverá su ficha.
 /// </param>
 /// <param name="mensaje">
 /// Mensaje que envía el juego.
 /// En este caso se recibe el mansaje para saber si cuando el jugador tiro en bonus obtuvo un 4, que en ese caso no se realiza ningún movimiento de la ficha.
 /// </param>
 public void DeterminarMovimiento(String nombreUsuario, String mensaje)
 {
     try {
         PartidaEnJuego = clientePartida.ObtenerPartida(PartidaEnJuego.Nombre);
         if (bonus && mensaje.Equals("4"))
         {
             CambiarTurno(nombreUsuario);
         }
         else
         {
             lb_Dado.Content = "";
             ServiceSYE.Jugador jugadorMovimiento = DeterminarJugadorMovimiento(nombreUsuario);
             MoverFicha(jugadorMovimiento);
             if (jugadorMovimiento.Turno.Casilla.Movimiento != 0)
             {
                 MoverFichaSerpienteOEscalera(jugadorMovimiento);
             }
             else
             {
                 if (jugadorMovimiento.Turno.Casilla.Bonus)
                 {
                     bonus = true;
                     TirarBonus(jugadorMovimiento);
                 }
                 else
                 {
                     CambiarTurno(nombreUsuario);
                 }
             }
         }
     } catch (CommunicationException) {
         EnviarMensajeError();
     }
 }
Exemplo n.º 4
0
        /// <summary>
        /// Constructor de la ventana Espera.
        /// </summary>
        /// <param name="jugador">
        /// Objeto jugador que se mandó desde el menú.
        /// </param>
        /// <param name="partida">
        /// Objeto partida que se mandó desde el menú.
        /// </param>
        public Espera(ServiceSYE.Jugador jugador, ServiceSYE.Partida partida)
        {
            InitializeComponent();
            if (lb_Esperando.Content.ToString().Substring(0, 1).Equals("E"))
            {
                lb_Esperando.FontSize = 40;
            }
            this.Title    = this.Title + " - " + jugador.NombreUsuario;
            this.Jugador  = jugador;
            this.Partida  = partida;
            this.Partidas = new Partidas();
            InstanceContext contextoPartida = new InstanceContext(Partidas);

            this.ClientePartida  = new ServiceSYE.PartidaClient(contextoPartida);
            this.Mensajes        = new Mensajes();
            this.Mensajes.Espera = this;
            InstanceContext contextoChat = new InstanceContext(Mensajes);

            this.ClienteChat    = new ServiceSYE.ChatClient(contextoChat);
            this.clienteJugador = new ServiceSYE.JugadorClient();
            try {
                ClientePartida.UnirsePartida(jugador, partida.Nombre);
                ClienteChat.UnirseChat(jugador.NombreUsuario, partida.Nombre);
                ValidarConectado();
                ClienteChat.EnviarMensaje("", partida.Nombre);
            } catch (CommunicationException) {
                EnviarMensajeError();
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Método que muestra la ventana de Espera.
        /// </summary>
        /// <param name="partida">
        /// Objeto partida que se creó.
        /// </param>
        public void UnirseAPartida(ServiceSYE.Partida partida)
        {
            Espera espera = new Espera(jugador, partida);

            espera.Show();
            cerrar = false;
            this.Close();
        }
Exemplo n.º 6
0
 /// <summary>
 /// Envía un mensaje a los jugadores de quien es el siguiente jugador en tirar. Y cambia la posición de las imagenes de los bonus.
 /// </summary>
 private void SiguienteJugador()
 {
     if (PartidaEnJuego.Turno == PartidaEnJuego.JugadoresPartida.ElementAt(0).Value.Turno.NumeroTurno)
     {
         PartidaEnJuego = clientePartida.ObtenerPartida(PartidaEnJuego.Nombre);
         CargarBonus();
     }
     if (PartidaEnJuego.Turno == Jugador.Turno.NumeroTurno)
     {
         clienteChat.EnviarMensajePartida("", PartidaEnJuego.Nombre, 1);
     }
 }
Exemplo n.º 7
0
        /// <summary>
        /// Calcula el movimiento que hará la ficha del jugador a una casilla en el tablero.
        /// </summary>
        /// <param name="numeroDado">
        /// Número que obtuvo el jugador al tirar el dado.
        /// </param>
        /// <param name="jugadorMovimiento">
        /// Objeto jugador que tiene los datos del jugador que realizó el tiro.
        /// </param>
        /// <param name="partidaJugando">
        /// Objeto partida que tiene los datos de la partida en juego.
        /// </param>
        /// <returns>
        /// Valor entero de la casilla a la que se moverá la ficha del jugador.
        /// </returns>
        public int CalcularMovimiento(int numeroDado, Jugador jugadorMovimiento, ServiceSYE.Partida partidaJugando)
        {
            int movimiento;

            if (jugadorMovimiento.Turno.Casilla.Numero + numeroDado > 100)
            {
                movimiento = 100 - (jugadorMovimiento.Turno.Casilla.Numero + numeroDado - 100);
            }
            else
            {
                movimiento = jugadorMovimiento.Turno.Casilla.Numero + numeroDado;
            }
            jugadorMovimiento.Turno.Casilla = partidaJugando.Tablero.Casillas[movimiento - 1];
            return(movimiento);
        }
Exemplo n.º 8
0
 /// <summary>
 /// Crea la partida.
 /// Si el jugador no tiene los puntos suficientes manda un mensaje de alerta.
 /// </summary>
 /// <param name="clientePartida">
 /// Referencia al servidor.
 /// </param>
 private void CrearJuego(ServiceSYE.PartidaClient clientePartida)
 {
     if (jugador.Estadisticas.Puntos >= 200)
     {
         ServiceSYE.Partida partida = new ServiceSYE.Partida {
             Nombre     = tb_NombrePartida.Text + "-" + jugador.NombreUsuario,
             Dificultad = cb_Dificultad.Text,
             Turno      = 1,
         };
         clientePartida.CrearPartida(partida);
         menuPrincipal.UnirseAPartida(partida);
         this.Close();
     }
     else
     {
         MessageBox.Show(Properties.Resources.mb_PuntosInsuficientes, Properties.Resources.mb_Alerta);
     }
 }
Exemplo n.º 9
0
 /// <summary>
 /// Realiza el proceso para unir al jugador a una partida.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void Bt_Unirse_Click(object sender, RoutedEventArgs e)
 {
     if (dg_Partidas.SelectedIndex >= 0)
     {
         if (jugador.Estadisticas.Puntos >= 200)
         {
             ServiceSYE.Partida partida = (ServiceSYE.Partida)dg_Partidas.SelectedItem;
             try {
                 clientePartida.SalirVerPartidas();
                 menuPrincipal.UnirseAPartida(partida);
                 this.Close();
             } catch (CommunicationException) {
                 MessageBox.Show(Properties.Resources.mb_ConexionServidor, Properties.Resources.mb_Alerta);
             }
         }
         else
         {
             MessageBox.Show(Properties.Resources.mb_PuntosInsuficientes, Properties.Resources.mb_Alerta);
         }
     }
 }
Exemplo n.º 10
0
        /// <summary>
        /// Calcula el movimiento que hará la ficha del jugador que tiro el bonus para los casos en los que:
        ///   la posición de la casilla se divide
        ///   la posición de la casilla se le resta 3
        ///   la posición de la casilla se le suma 10
        /// </summary>
        /// <param name="bonus">
        /// Valor entero que indica el bonus obtenido.
        /// </param>
        /// <param name="jugadorMovimiento">
        /// Objecto jugador que tiene los datos del jugador que tiro el bonus.
        /// </param>
        /// <param name="partidaJugando">
        /// Objeto partida que tiene los datos de la partida en juego.
        /// </param>
        /// <returns>
        /// Valor entero de la casilla a la que se moverá la ficha del jugador después del bonus.
        /// </returns>
        public int TiroBonus(int bonus, Jugador jugadorMovimiento, ServiceSYE.Partida partidaJugando)
        {
            int movimiento = 0;

            switch (bonus)
            {
            case 1:
                movimiento = jugadorMovimiento.Turno.Casilla.Numero / 2;
                break;

            case 2:
                movimiento = jugadorMovimiento.Turno.Casilla.Numero - 3;
                break;

            case 3:
                movimiento = jugadorMovimiento.Turno.Casilla.Numero + 10;
                break;
            }
            jugadorMovimiento.Turno.Casilla = partidaJugando.Tablero.Casillas[movimiento - 1];
            return(movimiento);
        }
Exemplo n.º 11
0
 /// <summary>
 /// Realiza el proceso para determinar el movimiento de la ficha de un jugador si es que cayó en una serpiente o una escalera.
 /// </summary>
 /// <param name="jugadorMovimiento">
 /// Objecto jugador que tiene los datos del jugador que cayó en una serpiente o escalera.
 /// </param>
 private void MoverFichaSerpienteOEscalera(ServiceSYE.Jugador jugadorMovimiento)
 {
     try {
         if (jugadorMovimiento.NombreUsuario.Equals(Jugador.NombreUsuario))
         {
             Jugador.Turno.Casilla = PartidaEnJuego.Tablero.Casillas[jugadorMovimiento.Turno.Casilla.Numero + jugadorMovimiento.Turno.Casilla.Movimiento - 1];
             clientePartida.MovimientoEspecial(PartidaEnJuego.Nombre, Jugador.Turno.Casilla.Numero);
         }
         DispatcherTimer temporizadorMovimiento = new DispatcherTimer();
         temporizadorMovimiento.Interval = new TimeSpan(0, 0, 1);
         temporizadorMovimiento.Tick    += (a, b) => {
             temporizadorMovimiento.Stop();
             try {
                 PartidaEnJuego = clientePartida.ObtenerPartida(PartidaEnJuego.Nombre);
                 DeterminarMovimiento(jugadorMovimiento.NombreUsuario, "");
             } catch (CommunicationException) {
                 EnviarMensajeError();
             }
         };
         temporizadorMovimiento.Start();
     } catch (CommunicationException) {
         EnviarMensajeError();
     }
 }