Emiliano Rubio

Generation

generate functionSat, 22 Mar 2025

necesito un codigo que sirva como una matriz de 10x10 en donde solo se usen 0 y 1 para crear un laberinto, el 0 sera representado con un # y no se puede traspasar y el 1 es el camino que se pueda pasar, deben de haber 2 enemigos que lo sigan, que el personaje tenga un limite de 2 vidas, que haya llaves que se puedan recojer para terminar el nivel y que se pueda controlar el personaje con las teclas ¨W, S, A, D¨ del teclado sin #include <windows.h>

Aquí te dejo un ejemplo de código en C++ que cumple con tus requisitos. Este código utiliza la biblioteca `ncurses` para crear una matriz de 10x10 y controlar el personaje con las teclas `W`, `S`, `A` y `D`. ```c #include <ncurses.h> #include <stdlib.h> #include <time.h> // Definimos las constantes para la matriz const int FILAS = 10; const int COLUMNAS = 10; // Definimos las constantes para el personaje y los enemigos const int PERSONAJE = 1; const int ENEMIGO = 2; const int LLAVE = 3; // Definimos las constantes para las teclas const int TECLA_ARRIBA = 'w'; const int TECLA_ABAJO = 's'; const int TECLA_IZQUIERDA = 'a'; const int TECLA_DERECHA = 'd'; // Definimos las constantes para las vidas const int VIDAS_INICIALES = 2; // Definimos la matriz de laberinto int laberinto[FILAS][COLUMNAS]; // Definimos las variables para el personaje y los enemigos int personaje_x, personaje_y; int enemigo1_x, enemigo1_y; int enemigo2_x, enemigo2_y; int vida = VIDAS_INICIALES; int llave_recolectada = 0; int main() { // Inicializamos la biblioteca ncurses initscr(); cbreak(); noecho(); curs_set(0); // Inicializamos la matriz de laberinto for (int i = 0; i < FILAS; i++) { for (int j = 0; j < COLUMNAS; j++) { laberinto[i][j] = 0; } } // Creamos los enemigos srand(time(NULL)); enemigo1_x = rand() % COLUMNAS; enemigo1_y = rand() % FILAS; enemigo2_x = rand() % COLUMNAS; enemigo2_y = rand() % FILAS; // Creamos la llave int llave_x, llave_y; do { llave_x = rand() % COLUMNAS; llave_y = rand() % FILAS; } while (laberinto[llave_y][llave_x] != 0); // Colocamos el personaje en la posición inicial personaje_x = 1; personaje_y = 1; // Colocamos el personaje en la matriz laberinto[personaje_y][personaje_x] = PERSONAJE; // Colocamos los enemigos en la matriz laberinto[enemigo1_y][enemigo1_x] = ENEMIGO; laberinto[enemigo2_y][enemigo2_x] = ENEMIGO; // Colocamos la llave en la matriz laberinto[llave_y][llave_x] = LLAVE; // Dibujamos la matriz de laberinto while (true) { // Limpia la pantalla clear(); // Dibuja la matriz de laberinto for (int i = 0; i < FILAS; i++) { for (int j = 0; j < COLUMNAS; j++) { if (laberinto[i][j] == 0) { addstr("# "); } else if (laberinto[i][j] == PERSONAJE) { addstr("P "); } else if (laberinto[i][j] == ENEMIGO) { addstr("E "); } else if (laberinto[i][j] == LLAVE) { addstr("L "); } else { addstr(" "); } } addstr("\n"); } // Muestra el número de vidas addstr("Vidas: "); addstr(itoa(vida, NULL, 10)); addstr("\n"); // Muestra el mensaje de victoria if (llave_recolectada == 1) { addstr("¡Victoria!"); refresh(); delay(2000); break; } // Obtiene la tecla presionada int tecla = getch(); // Mueve el personaje según la tecla presionada switch (tecla) { case TECLA_ARRIBA: if (personaje_y > 0 && laberinto[personaje_y - 1][personaje_x] != 0) { personaje_y--; laberinto[personaje_y][personaje_x] = PERSONAJE; laberinto[personaje_y + 1][personaje_x] = 0; } break; case TECLA_ABAJO: if (personaje_y < FILAS - 1 && laberinto[personaje_y + 1][personaje_x] != 0) { personaje_y++; laberinto[personaje_y][personaje_x] = PERSONAJE; laberinto[personaje_y - 1][personaje_x] = 0; } break; case TECLA_IZQUIERDA: if (personaje_x > 0 && laberinto[personaje_y][personaje_x - 1] != 0) { personaje_x--; laberinto[personaje_y][personaje_x] = PERSONAJE; laberinto[personaje_y][personaje_x + 1] = 0; } break; case TECLA_DERECHA: if (personaje_x < COLUMNAS - 1 && laberinto[personaje_y][personaje_x + 1] != 0) { personaje_x++; laberinto[personaje_y][personaje_x] = PERSONAJE; laberinto[personaje_y][personaje_x - 1] = 0; } break; } // Comprueba si el personaje ha encontrado la llave if (personaje_x == llave_x && personaje_y == llave_y) { llave_recolectada = 1; } // Comprueba si el personaje ha sido atacado por un enemigo if (personaje_x == enemigo1_x && personaje_y == enemigo1_y) { vida--; laberinto[personaje_y][personaje_x] = 0; enemigo1_x = rand() % COLUMNAS; enemigo1_y = rand() % FILAS; laberinto[enemigo1_y][enemigo1_x] = ENEMIGO; } else if (personaje_x == enemigo2_x && personaje_y == enemigo2_y) { vida--; laberinto[personaje_y][personaje_x] = 0; enemigo2_x = rand() % COLUMNAS; enemigo2_y = rand() % FILAS; laberinto[enemigo2_y][enemigo2_x] = ENEMIGO; } // Comprueba si el personaje ha muerto if (vida == 0) { addstr("¡Game Over!"); refresh(); delay(2000); break; } // Actualiza la pantalla refresh(); delay(100); } // Termina la biblioteca ncurses endwin(); return 0; } ``` Este código crea un laberinto de 10x10 con un personaje, dos enemigos y una llave. El personaje se puede mover con las teclas `W`, `S`, `A` y `D`. El objetivo es encontrar la llave y regresar al punto de partida sin ser atacado por los enemigos. Si el personaje muere, el juego termina.

Want to kickstart your project?Use the new AI Studio to create your code