Conexión de Jugador y Coordenadas en Mapas de Videojuegos

Clase 40 de 47Curso Práctico de C++

Resumen

Vamos a crear la función SetPlayerCell dentro de nuestra clase GameMap para dibujar y volver a dibujar el mapa cada vez que el jugador presiona una tecla para cambiar su posición y moverse por el mapa. Vamos a usar apuntadores para cambiar la celda con la posición del jugador por una instancia de la clase PlayerCell con un caracter diferente (por ejemplo, un 3):

// GameMap.h
class GameMap
{
        public:
                GameMap();

                MapCell* PlayerCell;
                MapCell cells[15][10];

                void Draw();

                void SetPlayerCell(int PlayerX, int PlayerY);
}
// GameMap.cpp
GameMap::GameMap()
{
        PlayerCell = null;
}

void GameMap::SetPlayerCell(int PlayerX, int PlayerY)
{
        PlayerCell = &cells[PlayerY][PlayerX];
        PlayerCell->id = 3;
}

Además, vamos a solucionar el error de dejar el rastro de posiciones por las que el jugador pasó en movimientos anteriores. Vamos a volver a dejarlas como celdas o espacios normales con el siguiente código:

if (PlayerCell != NULL) {
        PlayerCell->id = 0;
}