#include <stdio.h>
#include <stdlib.h>
#define FILAS 5
#define COLUMNAS 5
// Representación del laberinto
int laberinto[FILAS][COLUMNAS] = { {0, 1, 0, 0, 0}, {0, 1, 0, 1, 0}, {0, 0, 0, 1, 0}, {1, 1, 0, 0, 0}, {0, 0, 1, 1, 0}};
// Posición inicial del jugador
int jugadorX = 0;
int jugadorY = 0;
// Función para mostrar el laberinto
void mostrarLaberinto() { for (int i = 0; i < FILAS; i++) { for (int j = 0; j < COLUMNAS; j++) { if (i == jugadorX && j == jugadorY) { printf("P "); // P para el jugador } else if (laberinto[i][j] == 1) { printf("# "); // # para las paredes } else { printf(". "); // . para los caminos libres }
}
printf("\n"); }
}
// Función para mover al jugador
int moverJugador(int nuevaX, int nuevaY) { if (nuevaX >= 0 && nuevaX < FILAS && nuevaY >= 0 && nuevaY < COLUMNAS) { if (laberinto[nuevaX][nuevaY] == 0) { jugadorX = nuevaX;
jugadorY = nuevaY;
return 1; // Movimiento válido
}
}
return 0; // Movimiento inválido
}
// Función principal
int main() { char movimiento;
printf("¡Bienvenido al juego de laberinto!\n"); printf("Instrucciones: Usa 'w' para arriba, 's' para abajo, 'a' para izquierda, 'd' para derecha.\n");
while (1) { mostrarLaberinto();
printf("Movimiento (w/a/s/d): "); scanf(" %c", &movimiento);
switch (movimiento) { case 'w': moverJugador(jugadorX - 1, jugadorY); break; // Arriba
case 's': moverJugador(jugadorX + 1, jugadorY); break; // Abajo
case 'a': moverJugador(jugadorX, jugadorY - 1); break; // Izquierda
case 'd': moverJugador(jugadorX, jugadorY + 1); break; // Derecha
default: printf("Movimiento no válido.\n"); }
// Verificar si el jugador ha llegado a la meta (esquina inferior derecha)
if (jugadorX == FILAS - 1 && jugadorY == COLUMNAS - 1) { printf("¡Has llegado a la meta! ¡Felicidades!\n"); break;
}
}
return 0;
}