Por Nacho Cabanes
Veamos cómo hacerlo...
No son grandes cambios: por una parte, después de cada movimiento, dejaremos "marcado" que ahora se deberá comprobar si hay que caer:
public void MoverDerecha() { if (saltando || cayendo) return; // No debe moverse mientras salta if (miPartida.GetMapa().EsPosibleMover(x + incrX, y + alto - 4, x + ancho + incrX, y + alto)) x += incrX; cayendo = true; }
y la rutina de "Mover" el personaje, si tiene marcado que quizá haya que caer, deberá comprobar si hay hueco debajo, y moverlo en ese caso:
// Para cuando deba moverse solo, p.ej. saltando public new void Mover() { if (saltando) { [...] } else if (cayendo) { if (miPartida.GetMapa().EsPosibleMover( x, y + incrY + alto - 4, x + ancho, y + incrY + alto)) { y += incrY; } else cayendo = false; } }
Ya que estamos, vamos a usar un nuevo juego de imágenes, partiendo de las que en su día creó Andy Noble. Las originales seguirán estando disponibles, pero en una carpeta llamada "originales", para que más adelante se pueda optar entre jugar con la apariencia clásica o la mejorada.
Ahora el juego se vería así:
Ahora en el mapa deberemos hacer algún "agujero", porque si no nuestro personaje ya no podrá bajar desde las zonas más altas cuando están completamente cerradas (el juego original tenía zonas que se hundían, pero nuestra versión todavía no las tiene).
Y en Partida podemos eliminar ya las opciones de mover hacia arriba y hacia abajo, que no existían en el juego original, y que nos eran cómodas para hacer pruebas preliminares, pero que ahora ya no son (casi) necesarias.
Puedes descargar la versión 0.08 completa en la página del proyecto en Google Code.