Example #1
0
 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);
 }
Example #2
0
 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;
 }
Example #3
0
 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);
 }
Example #4
0
 public Estado(Estado original)
 {
     this.mapa = original.Mapa;
     this.matrizCajas = (MatrizCajas)original.MatrizCajas.Clone();
     this.posTipito = new Point((Size)original.PosTipito);
 }
Example #5
0
 public Estado(Mapa mapa)
 {
     this.mapa = mapa;
     this.matrizCajas = new MatrizCajas((byte)mapa.Ancho, (byte)mapa.Alto);
     this.posTipito = PosInvalida;
 }
Example #6
0
 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;
     }
 }
Example #7
0
 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;
 }
Example #8
0
 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);
 }
Example #9
0
 /// <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);
 }