Arreglos de Dos Dimensiones: El Laberinto de Pac-Man
¿Alguna vez te has preguntado cómo los videojuegos clásicos representan mapas, laberintos y mundos cuadriculados? En esta lección aprenderás arreglos de dos dimensiones (matrices 2D) construyendo la lógica del mítico Pac-Man. Descubrirás cómo funcionan las filas y columnas, la detección de colisiones contra muros, el recorrido con bucles anidados y podrás jugar con un simulador interactivo en tiempo real que muestra la memoria de la matriz mientras te mueves.
Simulador de Pac-Man: Matriz 2D en Vivo
char mapa[11][15]Observa cómo la posición [fila][columna] cambia en tiempo real en la estructura bidimensional:
¿Qué es un Arreglo de Dos Dimensiones (Matriz 2D)?
Un arreglo unidimensional (1D) representa una línea de casillas (como el inventario de Minecraft). Una matriz o arreglo bidimensional (2D) es una cuadrícula con filas y columnas, ideal para representar mapas, tableros de ajedrez, hojas de cálculo de Excel o el laberinto de Pac-Man.
📐 Regla de Oro: Primero la Fila, Luego la Columna
Para acceder a cualquier celda en C++, usamos dos corchetes consecutivos:
En C++, declaramos el laberinto de Pac-Man como una matriz de caracteres (char) de 11 filas por 15 columnas:
Bucles Anidados: Cómo Recorrer y Dibujar la Cuadrícula
Para imprimir o procesar una matriz 2D necesitamos dos bucles for anidados:
- Bucle exterior (
f): se mueve fila por fila desde0hastaFILAS - 1. - Bucle interior (
c): recorre cada columna de esa fila desde0hastaCOLS - 1. - Al terminar de imprimir una fila completa, hacemos
cout << endl;para saltar a la siguiente línea en consola.
Posición del Jugador en Coordenadas 2D
En lugar de buscar a Pac-Man en toda la matriz en cada frame, guardamos sus coordenadas exactas en dos variables simples:
int pacmanFila = 7;Moverse arriba resta 1, moverse abajo suma 1.
int pacmanCol = 7;Moverse a la izquierda resta 1, a la derecha suma 1.
Detección de Colisiones y Validación de Muros ('#')
Antes de modificar la posición de Pac-Man, calculamos la celda destino a la que desea avanzar. Si la celda contiene un muro '#', el movimiento se rechaza:
Inteligencia Artificial del Fantasma: Vecindario de 4 Direcciones
El fantasma ('G') evalúa las 4 celdas adyacentes: arriba (f-1, c), abajo (f+1, c), izquierda (f, c-1) y derecha(f, c+1). Escoge una celda libre de muros y se desplaza hacia ella. Si coincide exactamente con la celda de Pac-Man, ¡el juego termina!
Código Fuente Completo en C++ (Consola)
Puedes compilar y ejecutar este programa directamente en tu terminal de C++ con g++ pacman.cpp -o pacman:


