public void dibujaMovida(Mapa mapa, Movida movida) { form.SuspendLayout(); foreach (Point posicion in movida.PosAfectadas) { int nImagen = getNumImagen(mapa, posicion); this.pictureBoxs[posicion.X, posicion.Y].Image = (nImagen >= 0) ? imagenes.Images[nImagen] : null; } form.ResumeLayout(false); }
public bool cargaMapa(int numMapa) { this.listaMovidas = new Stack(100); try { this.mapa = CargaMapa.get.cargar(numMapa); } catch (SokoVen.ErrorAlCargarMapa e) { MessageBox.Show(e.Message, "Error del Mapa " + e.NumMapa, MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } dibujaMapa.dibujaNuevoMapa(mapa, groupBoxMovidas.Bounds.Bottom); this.labelMovidas.Text = listaMovidas.Count.ToString(); this.labelNivel.Text = numMapa.ToString(); this.formResol.analizador.Mapa = mapa; return true; }
public void dibujaMapaEntero(Mapa mapa) { form.SuspendLayout(); panel.Controls.Clear(); this.pictureBoxs = new PictureBox[mapa.Ancho, mapa.Alto]; for (int y = 0; y < mapa.Alto; y++) { for (int x = 0; x < mapa.Ancho; x++) { Point posicion = new Point(x, y); PictureBox pictureBox = new PictureBox(); pictureBox.ClientSize = this.picBoxSize; pictureBox.Location = new Point(x * tamImg, y * tamImg); int nImagen = getNumImagen(mapa, posicion); if (nImagen >= 0) pictureBox.Image = this.imagenes.Images[nImagen]; this.pictureBoxs[x, y] = pictureBox; panel.Controls.Add(pictureBox); } } form.ResumeLayout(false); }
public Estado(Estado original) { this.mapa = original.Mapa; this.matrizCajas = (MatrizCajas)original.MatrizCajas.Clone(); this.posTipito = new Point((Size)original.PosTipito); }
public Estado(Mapa mapa) { this.mapa = mapa; this.matrizCajas = new MatrizCajas((byte)mapa.Ancho, (byte)mapa.Alto); this.posTipito = PosInvalida; }
public Mapa cargar(int numMapa) { this.numMapa = numMapa; this.rutaMapa = Config.get.Mapas.formarRutaCompleta(numMapa.ToString()); try { using (StreamReader sr = File.OpenText(this.rutaMapa)) { byte alto = leerByteDesdeLinea(sr, "Alto="); byte ancho = leerByteDesdeLinea(sr, "Ancho="); Mapa mapa = new Mapa(ancho, alto); int numFila = 0; string linea = ""; while ((linea = sr.ReadLine()) != null) { int numColumna = 0; foreach (char caracter in linea) { Point posicion = new Point(numColumna, numFila); Lugar lugar; TipoObjeto objeto = TipoObjeto.Ninguno; switch (caracter) { case ' ': lugar = Lugar.Piso; break; case '$': lugar = Lugar.Piso; objeto = TipoObjeto.Caja; break; case '@': lugar = Lugar.Piso; objeto = TipoObjeto.Tipito; break; case '.': lugar = Lugar.Destino; break; case '*': lugar = Lugar.Destino; objeto = TipoObjeto.Caja; break; case '+': lugar = Lugar.Destino; objeto = TipoObjeto.Tipito; break; case '#': lugar = Lugar.Pared; break; default: throw new ErrorAlCargarMapa("La posicion " + posicion.ToString() + " contiene el caracter no valido '" + caracter + "'"); } mapa.Lugares[posicion] = lugar; if (objeto != TipoObjeto.Ninguno) mapa.EstadoActual[posicion] = objeto; numColumna++; } numFila++; } return mapa; } } catch (ErrorAlCargarMapa eacm) { eacm.NumMapa = numMapa; eacm.NombreArchivo = this.rutaMapa; throw eacm; } catch (System.Exception se) { ErrorAlCargarMapa eacm = new ErrorAlCargarMapa( @"No se pudo abrir el archivo """ + this.rutaMapa + '"', se); eacm.NumMapa = numMapa; eacm.NombreArchivo = this.rutaMapa; throw eacm; } }
private int getNumImagen(Mapa mapa, Point posicion) { int nImg = -1; TipoObjeto obj = mapa.EstadoActual[posicion]; switch (mapa.Lugares[posicion]) { case Lugar.Piso: nImg = obj == TipoObjeto.Tipito ? 1 : obj == TipoObjeto.Caja ? 0 : -1; break; case Lugar.Destino: nImg = obj == TipoObjeto.Tipito ? 4 : obj == TipoObjeto.Caja ? 3 : 2; break; case Lugar.Pared: nImg = 5; break; } return nImg; }
public void dibujaNuevoMapa(Mapa mapa, int posInfUltimoComp) { const int BORDE = 12; form.SuspendLayout(); panel.Height = mapa.Alto * tamImg + 2; panel.Width = mapa.Ancho * tamImg + 2; int altoVent = Math.Max(panel.Bounds.Bottom, posInfUltimoComp); form.ClientSize = new Size(panel.Bounds.Right + BORDE, altoVent + BORDE); dibujaMapaEntero(mapa); form.ResumeLayout(false); }
/// <summary> /// Limpia los recursos que se estan usando. /// </summary> protected override void Dispose(bool disposing) { if (disposing) { this.mapa = null; this.listaMovidas = null; this.formCNivel.Dispose(); this.formResol.Dispose(); if (components != null) { components.Dispose(); } } base.Dispose(disposing); }