Beispiel #1
0
    ///
    /// Comprueba si es posible mover una manzana a ciertas coordenadas
    /// (no será posible si es suelo, fruta o manzana: si hay algo en el
    /// mapa o colisiona con otra manzana)
    ///
    public bool EsPosibleMoverManzana(int xMin, int yMin, int xMax, int yMax)
    {
        if ((xMin < xIniPantalla) || (yMin < yIniPantalla - altoCasilla))
        {
            return(false);
        }

        if ((xMax > xFinPantalla) || (yMax > yFinPantalla))
        {
            return(false);
        }

        for (short fila = 0; fila < MAXFILAS; fila++)
        {
            for (short col = 0; col < MAXCOLS; col++)
            {
                char tileType = GetPosicion(col, fila);
                if ((tileType == 'X') || (tileType == 'Y') || (tileType == 'Z') ||
                    (tileType == 'C') || (tileType == 'P'))
                {
                    int xPos   = xIniPantalla + col * anchoCasilla;
                    int yPos   = yIniPantalla + fila * altoCasilla;
                    int xLimit = xIniPantalla + (col + 1) * anchoCasilla;
                    int yLimit = yIniPantalla + (fila + 1) * altoCasilla;

                    if (ElemGrafico.ColisionEntre(
                            xMin, yMin, xMax, yMax,
                            xPos, yPos, xLimit, yLimit))
                    {
                        return(false);
                    }
                }
            }
        }
        // If we have not collided with anything... then we can move
        return(true);
    }
Beispiel #2
0
    /// Indica si es posible moverse a cierta posicion de la pantalla

    /*public bool EsPosibleMover(short x, short y)
     * {
     *  short xMapa = (short)((x - xIniPantalla) / anchoCasilla);
     *  short yMapa = (short)((y - yIniPantalla) / altoCasilla);
     *
     *  if ((xMapa < 0) || (xMapa >= MAXCOLS) ||  // Si se sale
     *      (yMapa < 0) || (yMapa >= MAXFILAS)) return false;
     *
     *  if (GetPosicion(xMapa, yMapa) == 'M')  // Si es manzana
     *      return false;
     *
     *  return true;
     * }*/

    public bool EsPosibleMoverPersonaje(int xMin, int yMin, int xMax, int yMax)
    {
        if ((xMin < xIniPantalla) || (yMin < yIniPantalla))
        {
            return(false);
        }

        if ((xMax > xFinPantalla) || (yMax > yFinPantalla))
        {
            return(false);
        }

        for (short fila = 0; fila < MAXFILAS; fila++)
        {
            for (short col = 0; col < MAXCOLS; col++)
            {
                char tileType = GetPosicion(col, fila);
                if (tileType == 'M')
                {
                    int xPos   = xIniPantalla + col * anchoCasilla;
                    int yPos   = yIniPantalla + fila * altoCasilla;
                    int xLimit = xIniPantalla + (col + 1) * anchoCasilla;
                    int yLimit = yIniPantalla + (fila + 1) * altoCasilla;

                    if (ElemGrafico.ColisionEntre(
                            xMin, yMin, xMax, yMax,
                            xPos, yPos, xLimit, yLimit))
                    {
                        return(false);
                    }
                }
            }
        }

        return(true);
    }