Programación de Mapas Bidimensionales en Videojuegos
Clase 25 de 47 • Curso Práctico de C++
Resumen
En esta clase debemos crear un mapa (un arreglo bidimensional) con todas las posibles posiciones de nuestro héroe. Esto significa que, además de nuestro ciclo for para imprimir cada posición de nuestra columnas, debemos crear otro ciclo para imprimir las columnas (o al revés).
Además, debemos verificar la posición de nuestro héroe en ambas partes, filas y columnas. La forma más rápida de hacerlo es creando dos nuevas variables, heroPosX
y heroPosY
, para validar sus posiciones en sus respectivos ciclos.
En reto de esta clase es programar la funcionalidad de que nuestro jugador pueda moverse por todo el mapa, incluyendo hacia arriba y abajo, no solo a la izquierda y a la derecha.
Puntos extra si puedes evitar que el jugador salga del mapa, es decir, que la posición de nuestro héroe no pueda ser menor ni mayor que las posiciones de nuestro arreglo bidimensional.
Código de la clase:
void DrawMap(int HeroPosX, int HeroPosY, char GameMap[5][5]) {
for(int i = 0; i < 5; i++) {
for(int p = 0; p < 5; p++) {
if (i != HeroPosY)
{
cout << GameMap[p][i];
}
else
{
if (i != HeroPosY)
{
cout << GameMap[p][i];
}
else
{
cout << 'H';
}
}
}
// Necesitamos un salto de línea para diferenciar
// las filas de las columnas:
cout << endl;
}
}
int main()
{
// ...
int HeroPosX = 1;
int HeroPosy = 1;
char GameMap[5][5] =
{
{'1','1','1','1','1'},
{'1','1','1','1','1'},
{'1','1','1','1','1'},
{'1','1','1','1','1'},
{'1','1','1','1','1'},
}
// ...
}