47. Distintos enemigos en cada pantalla. Aplicación a MiniMiner.
Hay muchas formas de conseguir que podamos tener distintos enemigos en cada nivel.
Quizá la más versátil fuera que cada nivel estuviera representado por una "clase" distinta, que "heredase" de una clase "Nivel", de modo que todos los niveles tuvieran una serie de posibilidades comunes: mover los enemigos, acceder a cada uno de ellos para dibujarlos, comprobar colisiones con todos ellos, etc . Esto permitiría que todos los niveles se manejaran del mismo modo desde el progama principal, pero a la vez, que cada nivel pudiera tener distinta cantidad de enemigos, cada uno de ellos con un comportamiento totalmente distinto de los demás.
Pero para un juego de plataformas básico, hay otra alternativa mucho más simple: si todos los enemigos se mueven de forma horizontal o vertical (o al menos con trayectorias lineales), bastaría con indicar sus coordenadas X e Y iniciales, su incremento de X y de Y, y quizás el tipo de enemigo (si no todos tienen la misma apariencia).
En nuestro caso, esto se podría reflejar en que el fichero que muestra los datos del mapa ahora contendría más información, algo como:
M V T T T V T M
M M
M M
M M
M M
MNNNNOOOOOOOOOOOOOOOOOOOOOO OOM
M V VM
MNNNNNN NNNNM
MT M
M DDDDDD M
M NNNNNNM
M NNNNN PPM
M NNNNNN PPM
M NNNNNNNNNNM
M M
MNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNM
3 # Cantidad de enemigos
1 # Tipo del enemigo
150 200 # Coordenadas X e Y iniciales
0 1 # Velocidad en X e Y inicial
2 # Tipo del enemigo
350 200 # Coordenadas X e Y iniciales
0 -1 # Velocidad en X e Y inicial
1 # Tipo del enemigo
400 300 # Coordenadas X e Y iniciales
2 0 # Velocidad en X e Y inicial
(Esos comentarios que aparecen al final de las líneas que contienen los datos sobre los enemigos, pueden no existir, ya sea por ahorrar espacio o por ocultar detalles al usuario de nuestro juego. Aun así, en los juegos "de código abierto" se tiende a que ese tipo de detalles sea fácil de entender y de modificar, lo que permite que los usuarios de nuestro juego puedan crear niveles nuevos con facilidad)
(Pronto disponible)