예제 #1
0
        // Para cuando deba moverse solo, p.ej. saltando
        public new void Mover(Mapa m)
        {
            if (saltando)
            {
                // Calculo las siguientes posiciones y veo si son validas
                short xProxMov      = (short)(x + incrXSalto);
                short yProxMov      = (short)(y + pasosSaltoArriba[fotogramaMvto]);
                bool  subiendoSalto = (pasosSaltoArriba[fotogramaMvto] < 0);

                // Si todavía se puede mover, avanzo
                if (m.EsPosibleMover(
                        xProxMov, yProxMov + alto - 2,
                        xProxMov + ancho, yProxMov + alto) ||
                    subiendoSalto)
                {
                    x = xProxMov;
                    y = yProxMov;
                    SiguienteFotograma();
                }
                // Y si no, quizá esté cayendo
                else
                {
                    saltando = false;
                    cayendo  = true;
                }

                fotogramaMvto++;
                if (fotogramaMvto >= cantidadMovimientoSalto)
                {
                    saltando = false;
                    cayendo  = true;
                }
            }
            else if (cayendo)
            {
                if (m.EsPosibleMover(
                        x, y + incrY + alto - 4,
                        x + ancho, y + incrY + alto))
                {
                    y += incrY;
                }
                else
                {
                    cayendo = false;
                }
            }
        }
예제 #2
0
 // Métodos de movimiento
 public void MoverDerecha(Mapa m)
 {
     if (saltando || cayendo)
     {
         return;                      // No debe moverse mientras salta
     }
     CambiarDireccion(DERECHA);
     if (m.EsPosibleMover(x + incrX, y + alto - 4,
                          x + ancho + incrX, y + alto))
     {
         x += incrX;
         SiguienteFotograma();
     }
     cayendo = true;
 }
예제 #3
0
 public void MoverIzquierda(Mapa m)
 {
     if (saltando || cayendo)
     {
         return;                      // No debe moverse mientras salta
     }
     CambiarDireccion(IZQUIERDA);
     if (m.EsPosibleMover(x - incrX, y + alto - 4,
                          x + ancho - incrX, y + alto))
     {
         x -= incrX;
         SiguienteFotograma();
     }
     cayendo = true;
 }
예제 #4
0
        public void MoverIzquierda( Mapa m )
        {
            if (saltando || cayendo) return; // No debe moverse mientras salta

            CambiarDireccion(IZQUIERDA);
            if (m.EsPosibleMover(x - incrX, y + alto - 4,
                      x + ancho - incrX, y + alto))
            {
                x -= incrX;
                SiguienteFotograma();
            }
            cayendo = true;
        }
예제 #5
0
        // Métodos de movimiento
        public void MoverDerecha( Mapa m )
        {
            if (saltando || cayendo) return; // No debe moverse mientras salta

            CambiarDireccion(DERECHA);
            if (m.EsPosibleMover(x + incrX, y + alto - 4,
                      x + ancho + incrX, y + alto))
            {
                x += incrX;
                SiguienteFotograma();
            }
            cayendo = true;
        }
예제 #6
0
        // Para cuando deba moverse solo, p.ej. saltando
        public new void Mover(Mapa m)
        {
            if (saltando)
            {
                // Calculo las siguientes posiciones y veo si son validas
                short xProxMov = (short)(x + incrXSalto);
                short yProxMov = (short)(y + pasosSaltoArriba[fotogramaMvto]);
                bool subiendoSalto = (pasosSaltoArriba[fotogramaMvto] < 0);

                // Si todavía se puede mover, avanzo
                if (m.EsPosibleMover(
                    xProxMov, yProxMov + alto - 2,
                    xProxMov + ancho, yProxMov + alto)
                    || subiendoSalto)
                {
                    x = xProxMov;
                    y = yProxMov;
                    SiguienteFotograma();
                }
                // Y si no, quizá esté cayendo
                else
                {
                    saltando = false;
                    cayendo = true;
                }

                fotogramaMvto++;
                if (fotogramaMvto >= cantidadMovimientoSalto)
                {
                    saltando = false;
                    cayendo = true;
                }
            }
            else if (cayendo)
            {
                if (m.EsPosibleMover(
                    x, y + incrY + alto - 4,
                   x + ancho, y + incrY + alto))
                {
                    y += incrY;
                }
                else
                     cayendo = false;
            }
        }