como hacer un menu en c++

Iniciado por khio123456, 20 Febrero 2008, 20:59 PM

0 Miembros y 1 Visitante están viendo este tema.

tragantras

Cita de: Winder en  3 Diciembre 2009, 12:53 PM
Citarcomo hacer un menu en c++

Pasos a seguir para hacer un menú en C++:

1º Abrimos nuestro IDE favorito o editor de texto plano.

2º Pensamos que tipo de menú queremos hacer, si gráfico o de texto, que aspecto queremos que tenga, como estará organizado etc.

3º Empezamos a escribir código moduladamente, construimos cacho a cacho nuestro menú.

4º ¿Qué ha pasado? ¿Cómo continuo? me quedé atascado... puede ser que al probar un módulo no me compile (repasamos el código y si es necesario consultamos Google y manuales de C++), puede ocurrir que al ejecutar nos haya explotado (unfallo de segmentación u otro error inesperado) o que simplemente no haga lo que queramos (en ambos caso, depuramos con nuestro depurador favorito o a mano, con nuestra técnica favoritas, poniendo asertos o visualizando variables con cout... etc)

5º Demonios, he depurado, he consultado mis apuntes de C++, por internet y no me veo capaz de avanzar... entonces entramos a elhacker.net, categoría de programación, foro de C/C++

6º Lo primero, buscar si nuestra duda está resuelta en algún post ya existente, para esta tarea nos podemos ayudar el buscador del foro (mira botones superiores)

7º Vaya, no encuentro lo que busco... tendremos que preguntar, abrimos un tema, con un titulo significativo, por ejemplo: 'como hacer un menu en C++'

8º En nuestro mensaje explicamos detalladamente lo que queremos, tipo de menú, aspecto.... camino que hemos tomado para realizarlo, problemas que hemos tenido y cómo hemos intentado solucionar dichos problemas, esta epxlicación debería ir acompañada SIEMPRE del código programado.

9º Felicidades, la gente ha captado lo que quieres hacer, se ha convencido de que te hasm olestado en buscar y en solucionar tus problemas y tienen material suficiente para ayudarte. Ahora es cuestión de tiempo para que lleguen las respuestas y las ayudas.





sin duda sin duda, pq yo tambien me empiezo a cansar de que la gente venga con preguntas del tipo:

¿Como se hace  XXXX programa? xD

lo suyo del foro es responder a preguntas no a ejercicios que manden en clase


pD: no quiero ser estupido, es solo que empiezo a cansarme xD
Colaboraciones:
1 2

nicolas2013alcubo

Por favor, coloquen el ejemplo de un código en C de un menú en el que con los cursores se resalten la opcion (El clásico video invertido) y al presionar Enter se seleccione la opción señalada, no me refiero a los menues en el que la opción se seleccione pulsando el número o letra indicada.

nicolas2013alcubo

Respondan por favor... Hace tiempo que solicité eso del menú con los cursores. Gracias. Nico

leosansan

#13
Cita de: nicolas2013alcubo en  5 Mayo 2013, 05:31 AM
Por favor, coloquen el ejemplo de un código en C de un menú en el que con los cursores se resalten la opcion (El clásico video invertido) y al presionar Enter se seleccione la opción señalada, no me refiero a los menús en el que la opción se seleccione pulsando el número o letra indicada.


La verdad es que me lo he tomado como todo un reto y al final salió, aunque es sólo un esbozo de algo que haré más depurado con un pelín más de tiempo, pero para que vayas viendo algo. Eso sí, haciendo uso  de las API de windows y con color en el contraste y en la opción seleccionada. Para más información a este respecto ver el tema de gama de colores. Espero te sea útil:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

void contraste (int abajo);

int main ()
{
   int arriba=1,abajo=1;
   puts ("Menu");
   puts ("1. Entrar datos");
   puts ("2. Leer datos");
   puts ("3. Borrrar datos");
   gotoxy (0,1);
   while (1)
   {
       contraste ( abajo);
       if (abajo>3 || abajo<1)
           {
               gotoxy (0,1);
               abajo=1;
           }

       else if (GetAsyncKeyState(VK_DOWN))
           {
               contraste ( abajo);
               gotoxy (0,abajo+1);

               abajo++;
               Sleep(100);
           }
       else if (GetAsyncKeyState(VK_UP))
           {
               contraste ( abajo);
               gotoxy (0,abajo-1);
               contraste ( abajo);
               abajo--;
               Sleep(100);
           }
       else  if (GetAsyncKeyState(VK_RETURN))
               {
                   system ("cls");
                   if (abajo==1)
                       {
                           color (30);
                           puts("Hago esto si abajo=1");
                           color (7);
                           break;
                       }
                   else if (abajo==2)
                       {
                           color (62);
                           puts("Hago esto si abajo=2");
                           color (7);
                           break;

                       }
                   else
                       {
                            color (181);
                            puts("Hago esto si abajo=3");
                            color (7);
                            break;
                       }

                   Sleep(100);
               }
   }
   system ("pause");
   return 0;
}

int gotoxy(int x, int y)
{
  COORD coord;
  HANDLE h_stdout;
  coord.X = x;
  coord.Y = y;
  if ((h_stdout = GetStdHandle(STD_OUTPUT_HANDLE)) == INVALID_HANDLE_VALUE)
     return 0;
  if (SetConsoleCursorPosition(h_stdout, coord) == 0)
     return 0;
  return 1;
}
int color (int n)
{
       SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE), n );
}

void contraste (int abajo)
{

       if (abajo ==1)
       {
           color (7);
           gotoxy (0,0);
           puts ("Menu");
           color (112);
           puts ("1. Entrar datos");
           color (7);
           puts ("2. Leer datos");
           puts ("3. Borrrar datos");
           gotoxy (0,abajo);
           Sleep(100);
       }
       else if (abajo ==2)
       {
           //color (112);
           gotoxy (0,0);
           color (7);
           puts ("Menu");
           puts ("1. Entrar datos");
           color (112);
           puts ("2. Leer datos");
           color (7);
           puts ("3. Borrrar datos");
           color (7);
           gotoxy (0,abajo);
           Sleep(100);
       }
      else  if (abajo ==3)
       {
           //color (112);
           gotoxy (0,0);
           color (7);
           puts ("Menu");
           puts ("1. Entrar datos");
           puts ("2. Leer datos");
           color (112);
           puts ("3. Borrrar datos");
           color (7);
           gotoxy (0,abajo);
           Sleep(100);
       }
}


Saluditos!. ... ..

roger2427

gracias parce eres un maestro me ayudo bastante con un rpoyecto que tengo que hacer
pero me podrias explicar como hacer las funciones que pusite la del contraste
y las sentencias que dicen GetAsyncKeyState(VK_UP) porque tengo que defender el proyecto
me seria de gran ayuda gracias

leosansan


Lee la referencia de la  MSDN tambien la de GetAsyncKeyState.


Saluditos! ..... !!!!