示例#1
0
        protected override void Casilla_click(object sender, EventArgs e)
        {
            int   col, fila;
            Label label = (Label)sender;

            col  = label.Location.X / label.Width;
            fila = label.Location.Y / label.Height;
            if (label.Image != null)
            {
                --situadas;
                label.Image = null;
                if (situadas == 0)
                {
                    button1.Enabled = false;
                }
                vector[col] = -1;
            }
            else
            {
                if ((situadas < maximas) && OKparcial(col, fila))
                {
                    ++situadas;
                    label.Image = ((col + fila) % 2 == 0 ? Casillas.ImagenN : Casillas.ImagenB);
                    if (situadas == 1)
                    {
                        button1.Enabled = true;
                    }
                    vector[col] = fila;
                }
                else
                {
                    Casillas.Sonido();
                }
            }
        }
        /// <summary>
        /// Mueve la casilla a traves de los portales, cambiandola de posicion
        /// </summary>
        /// <param name="cayoPortal"> verifica si cayó en un portal o no</param>
        public void MoverFicha(bool cayoPortal)
        {
            ServidorJuegoSE.Casilla casillaTemporal = Casillas.ElementAt(JugadorEnTurno.Posicion - 1);
            var imagenesTablero = grid_Tablero.Children.Cast <UIElement>().Where(i => i is Image).Cast <Image>();
            var fichaAMover     = imagenesTablero.FirstOrDefault(i => i.Name == JugadorEnTurno.NombreFicha);

            Grid.SetColumn(fichaAMover, casillaTemporal.Columna);
            Grid.SetRow(fichaAMover, casillaTemporal.Fila);
            var portal = Portales.Find(x => x.IdCasilla == casillaTemporal.Id);

            if (portal != null && !cayoPortal)
            {
                var otroPortal = Portales.Find(x => x.Color == portal.Color && x.ZonaTablero != portal.ZonaTablero);
                JugadorEnTurno.Posicion = otroPortal.IdCasilla;
                if (JugadorEnTurno.ApodoJugador == Jugador.Apodo)
                {
                    ClienteMultijugador.CambiarPosicionFicha(Sala.IdSala, JugadorEnTurno);
                }
                DispatcherTimer temporizador = new DispatcherTimer();
                temporizador.Interval = TimeSpan.FromSeconds(2d);
                temporizador.Tick    += TemporizadorDetenido;
                temporizador.Start();
            }
            if (casillaTemporal.Especial && JugadorEnTurno.ApodoJugador == Jugador.Apodo)
            {
                ClienteMultijugador.CambiarPortales(Sala.IdSala, Casillas.ToArray(), Portales.ToArray());
            }
        }
 /// <summary>
 /// Cambia los portales de casilla cuando cae en una casilla especial
 /// </summary>
 /// <param name="portalesRecibidos">lista de portales creados</param>
 public void CambiarPortales(ServidorJuegoSE.Portal[] portalesRecibidos)
 {
     for (int i = 0; i < Portales.Count; i++)
     {
         var casillaDelPortal  = Casillas.Find(x => x.Id == Portales[i].IdCasilla);
         var imagenesEnCasilla = grid_Tablero.Children.Cast <UIElement>().Where
                                     (x => x is Image && Grid.GetColumn(x) == casillaDelPortal.Columna &&
                                     Grid.GetRow(x) == casillaDelPortal.Fila).Cast <Image>();
         var portal       = imagenesEnCasilla.FirstOrDefault(x => x.Name.Equals(Portales[i].Color + Portales[i].ZonaTablero));
         var nuevaCasilla = Casillas.Find(x => x.Id == portalesRecibidos[i].IdCasilla);
         Grid.SetRow(portal, nuevaCasilla.Fila);
         Grid.SetColumn(portal, nuevaCasilla.Columna);
     }
     Portales = portalesRecibidos.ToList();
 }
        /// <summary>
        /// Coloca las casillas especiales en el tablero
        /// </summary>
        private void ColocarCasillasEspeciales()
        {
            Image casillaEspecial;
            var   casillasEspeciales = Casillas.Where(x => x.Especial).ToList();

            for (int i = 0; i < casillasEspeciales.Count; i++)
            {
                casillaEspecial        = new Image();
                casillaEspecial.Source = new BitmapImage(new Uri("Resources/Tablero/casillaEspecial.png", UriKind.Relative));
                casillaEspecial.HorizontalAlignment = HorizontalAlignment.Left;
                casillaEspecial.VerticalAlignment   = VerticalAlignment.Bottom;
                casillaEspecial.Height = 70;
                Grid.SetColumn(casillaEspecial, casillasEspeciales[i].Columna);
                Grid.SetRow(casillaEspecial, casillasEspeciales[i].Fila);
                grid_Tablero.Children.Add(casillaEspecial);
            }
        }
        /// <summary>
        /// Coloca los portales
        /// </summary>
        private void ColocarPortales()
        {
            ServidorJuegoSE.Casilla casilla;
            Image imagenPortal;

            for (int i = 0; i < Portales.Count; i++)
            {
                casilla             = Casillas.Find(x => x.Id == Portales[i].IdCasilla);
                imagenPortal        = new Image();
                imagenPortal.Source = new BitmapImage(new Uri(Portales[i].UriPortal, UriKind.Relative));
                imagenPortal.HorizontalAlignment = HorizontalAlignment.Left;
                imagenPortal.VerticalAlignment   = VerticalAlignment.Bottom;
                imagenPortal.Height = 90;
                imagenPortal.Name   = Portales[i].Color + Portales[i].ZonaTablero;
                Grid.SetRow(imagenPortal, casilla.Fila);
                Grid.SetColumn(imagenPortal, casilla.Columna);
                grid_Tablero.Children.Add(imagenPortal);
            }
        }