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".