• Viernes 26 de Abril de 2024, 09:16

Autor Tema:  ¿Es muy dificil hacer esto en C?  (Leído 4687 veces)

nicolas2013alcubo

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
¿Es muy dificil hacer esto en C?
« en: Domingo 12 de Mayo de 2013, 01:04 »
0
Gola amigo.
Soy una persona que está aprendiendo algo de C sobre la marcha" programando pequeñas tonterías como modo de práctica. Uso Turbo C++ 3.0 corriendolo en DOSBOX y Dev C++ usando la librería que emula las funciones del antiguo conio.h llamada conio2.h.
Estoy empezando con crear sencillos menúes de opciones. Un ejemplo:

#include<stdio.h>
#include<conio2.h>
int main(void)
{
char opcion;
do{
clrscr();
gotoxy(20,2);printf("***MENU TONTO***");
gotoxy(1,5);printf("1- Ver como me llamo");
gotoxy(1,6);printf("2- Mi opinion acerca de los pedofilos");
gotoxy(1,7);printf("3- Salir");
gotoxy(20,20);printf("PRESIONE EL NUMERO INDICADO EN LA OPCION...");
opcion=getch();
switch(opcion)
{
       case '1':
            clrscr();
            printf("Yo me llamo Nicolas");
            getch();
            break;
            case '2':
            clrscr();
            printf("Esa gente es vil");
            getch();
            break;
                     
              }
}while(opcion!='3');
clrscr();
printf("¡¡¡HASTA LA VISTA, BABY!!!");
getch();
}

En este tonto menú de práctica el usuario escoge la opción sencillamente presionando el número indicado en dicha opción, ahora lo que yo desearía hacer es ese mismo tonto menú, pero en el que el usuario use las flechas de los cursores para "resaltar" la opción a elegir y después deba presionar Enter para elegir la opción resaltada. Algunas pistas tengo de cómo lograrlo. He visto el código de las teclas de los cursores:
Arriba: 0 72
Abajo: 0 80
Izquierda: 0 75
Derecha: 0 77
Esc: 27
Enter: 13
y creo que lo que hay que usar para resaltar la opción son las funciones textbackground y textcolor respectivamente. Me parece que otra forma más sencilla de leer las teclas de los cursores es: Supongamos esto:

char tecla;
obviamente despues colocar: tecla=getch();
Y referirse a los cursores de esta manera:
if(tecla=='M') Me refiero a la tecla Arriba
if(tecla=='K') Me refiero a la tecla Abajo
if(tecla=='H') Me refiero a la tecla Izquierda
if(tecla=='P') Me refiero a la tecla Derecha

El tema es que yo podría empezar resaltando con textbackground y textcolor la primera opción, pero ¿Cómo hago para que al pulsar hacia abajo ese textbackground y textcolor resalte la otra opción y deje sin resaltar la opción anterior?. Quiero crear exactamente ese tonto menú, pero usando ese otro sistema de selección mencionado. Ayuda, please. Saludos. Nico :angel: Respuesta, por favor.
« última modificación: Domingo 12 de Mayo de 2013, 03:33 por nicolas2013alcubo »

nicolas2013alcubo

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re:¿Es muy dificil hacer esto en C?
« Respuesta #1 en: Lunes 13 de Mayo de 2013, 07:25 »
0
Pero respindan mi duda, lor favor...

ryuz

  • Miembro activo
  • **
  • Mensajes: 29
  • Nacionalidad: ar
  • :)
    • Ver Perfil
Re:¿Es muy dificil hacer esto en C?
« Respuesta #2 en: Lunes 13 de Mayo de 2013, 09:42 »
0
Buenas, disculpa un poco a los compañeros del foro pero no siempre la gente se puede conectar.

Creo que comprendi tu problema, como esto no es hacer los "deberes" ni nada por el estilo, te explicare un poco.

Como yo soy de ámbito *nix, no puedo hablar mucho sobre librerias de sistemas Windows, pero creo que deberia existir una libreria curses en ambos.

curses.h es una libreria que nos ofrece la posibilidad de añadir CLI bastante interesante en nuestras aplicaciones desarrolladas en C.

En Python esta ncurses si no mal recuerdo.

Te recomiendo que mires el siguiente enlace, el cual contiene unos códigos donde se implementa un menu interactivo.

http://www.walternores.com/?p=1744

Espero haber ayudado.

nicolas2013alcubo

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re:¿Es muy dificil hacer esto en C?
« Respuesta #3 en: Lunes 13 de Mayo de 2013, 20:00 »
0
Gracias por tu ayuda, soy novato y capaz que con ncurses no me va a ser tan sencillo entender, por eso deseo usar textbackground y textcolor para resaltar la opción a elegir en mi menú, lo que sucede es que no sé cómo organizar las instrucciones, primero debería definir las teclas de los cursores. Podría ser algo como:
#define arriba 72
#define abajo 80
#define uzquierda 75
#define derecha 77

El tema es saber implementar bien la función para leer las teclas, hacer que dependiendo que tecla presionemos ese textbackground y textcolor que resalta la opción se desplace hacia la opción correspondiente y demás cosas.

ryuz

  • Miembro activo
  • **
  • Mensajes: 29
  • Nacionalidad: ar
  • :)
    • Ver Perfil
Re:¿Es muy dificil hacer esto en C?
« Respuesta #4 en: Lunes 13 de Mayo de 2013, 20:23 »
0
Puff, si no es con curses no se la verdad...
Tambien podrias emular 4 menus diferentes en caso de tener 4 opciones, y dependiendo de que pulses hacia abajo, o ahcia arriba, ira a un menu donde este coloreado el fondo de uno en especial.

nicolas2013alcubo

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re:¿Es muy dificil hacer esto en C?
« Respuesta #5 en: Lunes 13 de Mayo de 2013, 20:45 »
0
Claro, eso es lo que sucede. En sí el lenguaje C no es tan difícil, es que es "artesanal" a la hora de hacer decorados. En Clipper hay cláusulas para crear cajas de texto (La cláusula PICTURE, creo) y para ese tipo de menues que deseo hacer está el menu to y las opciones o elementos del menú se "colorean" con prompt. Ej: @5,5 prompt "Ingresar nuevo registro", por dar un simple ejemplo. C no es difícil, pero es más "artesanal".