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); } }