Emiliano Rubio

Generation

generate functionThu, 13 Mar 2025

Necesito que hagas una modificación de este código en dónde te puedas moverte usando las flechas del teclado a base de este código sin void: #include <stdio.h> int main() { int sizeX = 6; int sizeY = 7; int matrix[6][7] = { {0, 1, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0}, {0, 1, 1, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0}, {0, 0, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 1, 0, 0} }; for (int i = 0; i < sizeX; i++) { for (int j = 0; j < sizeY; j++) { printf("%d ", matrix[i][j]); } } return 0; }

Aquí te muestro una versión modificada del código que utiliza las flechas del teclado para moverse en la matriz. Para hacer esto, utilizaremos la biblioteca `ncurses` que es una biblioteca de C++ para crear interfaces de usuario en modo texto. Primero, debes instalar la biblioteca `ncurses` en tu sistema. En Ubuntu o distribuciones similares, puedes instalarla con el siguiente comando: ```bash sudo apt-get install libncurses5-dev ``` Luego, puedes compilar y ejecutar el programa con el siguiente comando: ```bash g++ -o movimiento movimiento.cpp -lncurses ``` Aquí te muestro el código: ```cpp #include <ncurses.h> #include <iostream> // Constantes para las direcciones const int DERECHA = 1; const int IZQUIERDA = -1; const int ARRIBA = -1; const int ABAJO = 1; // Estructura para representar la posición struct Posicion { int x; int y; }; int main() { // Inicializar ncurses initscr(); noecho(); curs_set(0); // Tamaño de la matriz int sizeX = 6; int sizeY = 7; // Matriz int matrix[6][7] = { {0, 1, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0}, {0, 1, 1, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0}, {0, 0, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 1, 0, 0} }; // Posición inicial Posicion posicion = {1, 1}; // Imprimir la matriz mvprintw(0, 0, "Matriz:"); for (int i = 0; i < sizeX; i++) { for (int j = 0; j < sizeY; j++) { mvprintw(i + 1, j * 3, "%d ", matrix[i][j]); } mvprintw(i + 1, sizeY * 3, "\n"); } // Imprimir la posición actual mvprintw(posicion.y + 1, posicion.x * 3, "P"); // Bucle principal while (true) { // Obtener la entrada del usuario int entrada = getch(); // Moverse según la entrada switch (entrada) { case KEY_UP: if (posicion.y > 0 && matrix[posicion.y - 1][posicion.x] == 1) { posicion.y--; } break; case KEY_DOWN: if (posicion.y < sizeX - 1 && matrix[posicion.y + 1][posicion.x] == 1) { posicion.y++; } break; case KEY_LEFT: if (posicion.x > 0 && matrix[posicion.y][posicion.x - 1] == 1) { posicion.x--; } break; case KEY_RIGHT: if (posicion.x < sizeY - 1 && matrix[posicion.y][posicion.x + 1] == 1) { posicion.x++; } break; } // Imprimir la matriz actualizada clear(); mvprintw(0, 0, "Matriz:"); for (int i = 0; i < sizeX; i++) { for (int j = 0; j < sizeY; j++) { mvprintw(i + 1, j * 3, "%d ", matrix[i][j]); } mvprintw(i + 1, sizeY * 3, "\n"); } // Imprimir la posición actual mvprintw(posicion.y + 1, posicion.x * 3, "P"); // Actualizar la pantalla refresh(); } // Terminar ncurses endwin(); return 0; } ``` Este código utiliza la biblioteca `ncurses` para crear una interfaz de usuario en modo texto y permite al usuario moverse en la matriz utilizando las flechas del teclado. La posición actual se indica con la letra "P".

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