/// /// 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); }
/// 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); }