Beispiel #1
0
 internal Movida(TipoObjeto tipoOb, Direccion dir, Point posI, Point posF)
 {
     this.tipoObjeto = tipoOb;
     this.direccion = dir;
     this.posInicial = posI;
     this.posFinal = posF;
 }
Beispiel #2
0
 public bool vecino(out Point nuevaPos, Point posicion, Direccion direccion)
 {
     nuevaPos = posicion + direccion.Desp;
     if (nuevaPos.X < 0 || nuevaPos.X >= lugares.Ancho ||
         nuevaPos.Y < 0 || nuevaPos.Y >= lugares.Alto)
     {
         return false;
     }
     /*try {
       Lugar l = lugares[nuevaPos]; //prueba que no esté fuera de rango
     } catch (System.IndexOutOfRangeException e) {
       string msg = "El mapa no tiene posición " + nuevaPos;
       throw new FueraDelMapa(msg, e, nuevaPos);
     }*/
     return true;
 }
Beispiel #3
0
 public static bool crear(out Movida movida, Estado estado, Direccion direccion)
 {
     movida = null;
     Point posDest;
     if (!estado.Mapa.vecino(out posDest, estado.PosTipito, direccion))
         return false;
     movida = new Movida(TipoObjeto.Tipito, direccion, estado.PosTipito, posDest);
     if (!estado.pasable(posDest))
     {
         if (!estado.MatrizCajas[posDest])
             return false;
         Point posFinal;
         if (!estado.Mapa.vecino(out posFinal, posDest, direccion))
             return false;
         movida.SubMovida = new Movida(TipoObjeto.Caja, direccion, posDest, posFinal);
         if (!estado.pasable(movida.SubMovida.PosFinal))
             return false;
     }
     return true;
 }
Beispiel #4
0
 private void moverTipito(Direccion direccion)
 {
     Movida movida;
     if (!Movida.crear(out movida, mapa.EstadoActual, direccion))
         return;
     listaMovidas.Push(movida);
     mapa.EstadoActual.realizarMovida(movida);
     dibujaMapa.dibujaMovida(mapa, movida);
     this.labelMovidas.Text = listaMovidas.Count.ToString();
     if (mapa.EstadoActual.MapaTerminado())
     {
         MessageBox.Show("Mapa Completo!", "Felicitaciones!",
           MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
     }
 }
Beispiel #5
0
 private Direccion(Size desp, Direccion inversa, string toString)
 {
     this.desp = desp;
     this.toString = toString;
     this.inversa = inversa;
 }
Beispiel #6
0
 public bool tieneVecinoPasable(Point posicion, Direccion direccion)
 {
     Point posVecina;
     if (!mapa.vecino(out posVecina, posicion, direccion))
         return false;
     return mapa.Lugares[posVecina] != Lugar.Pared;
 }