domingo, 27 de setembro de 2015

Super menu - linguagem c

Quando seus programas em linguagem c se tornarem mais avançados,
é sinal que você futuro programador necessita de um menu que acompanhe
seus avanços.
Já postei um Programa no qual entitulei de: "Menu inteligente", más o
programa apesar da alta eficiência só permitia o uso de duas setas do teclado,
que são as setas pra baixo e pra cima, e olha, ele é campeão disparado em
visualizações no meu blog, este aqui com certeza é bem melhor, aceita as
quatro setas do teclado e rejeita qualquer outra tecla exceto o Esc que também
é um canal de saída do programa.
Programa indicado a estudantes, e hobistas avançados em linguagem c.


Veja o vídeo abaixo:



Veja abaixo o código do programa:

#include <conio.h>
#include <stdio.h>
int main ( );
void Janela5 ( ) {
     int lin, col;
     col = 0;
     system ( "Color 10" );
     for ( lin = 2; lin <= 24 ; lin++ )
         for ( col = 2; col <= 78 ; col++ ) {
              gotoxy ( col , lin );
              textbackground ( WHITE );
              printf ( " " );
         }
}
int Ola_A ( int x , int y ) {
     system ( "cls" );
     Janela5 ( );
     textcolor ( LIGHTRED );
     gotoxy ( 30 , 3 );
     printf ( "SUPER MENU - LINGUAGEM C" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 31 , 7 );
     printf ( "Você chamou a função A" );
     textcolor ( LIGHTRED );
     gotoxy ( 31 , 17 );
     printf ( "PRESSIONE QUALQUER TECLA" );
     getch ( );
     return main ( );
}
int Ola_B ( int x , int y ) {
     system ( "cls" );
     Janela5 ( );
     textcolor ( LIGHTRED );
     gotoxy ( 30 , 3 );
     printf ( "SUPER MENU - LINGUAGEM C" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 31 , 7 );
     printf ( "Você chamou a função B" );
     textcolor ( LIGHTRED );
     gotoxy ( 31 , 17 );
     printf ( "PRESSIONE QUALQUER TECLA" );
     getch ( );
     return main ( );
}
int Ola_C ( int x , int y ) {
     system ( "cls" );
     Janela5 ( );
     textcolor ( LIGHTRED );
     gotoxy ( 30 , 3 );
     printf ( "SUPER MENU - LINGUAGEM C" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 31 , 7 );
     printf ( "Você chamou a função C" );
     textcolor ( LIGHTRED );
     gotoxy ( 31 , 17 );
     printf ( "PRESSIONE QUALQUER TECLA" );
     getch ( );
     return main ( );
}
int Ola_D ( int x , int y ) {
     system ( "cls" );
     Janela5 ( );
     textcolor ( LIGHTRED );
     gotoxy ( 30 , 3 );
     printf ( "SUPER MENU - LINGUAGEM C" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 31 , 7 );
     printf ( "Você chamou a função D" );
     textcolor ( LIGHTRED );
     gotoxy ( 31 , 17 );
     printf ( "PRESSIONE QUALQUER TECLA" );
     getch ( );
     return main ( );
}
void Mov_Tecla ( int x , int y ) {
     textcolor ( LIGHTRED );
     gotoxy ( 30 , 3 );
     printf ( "SUPER MENU - LINGUAGEM C" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 30 , 5 );
     printf ( "Use as setas do teclado: " );
     if ( x == 17 && y == 7 ) {
         Ola_A ( x , y );
     }
     if ( x == 17 && y == 9 ) {
         Ola_B ( x , y );
     }
     if ( x == 17 && y == 11 ) {
         Ola_C ( x , y );
     }
     if ( x == 17 && y == 13 ) {
         Ola_D ( x , y );
     }
     if ( x == 17 && y == 15 ) {
         textcolor ( LIGHTBLUE );
         gotoxy ( 17 , 17 );
         printf ( "Por: " );
         textcolor ( LIGHTMAGENTA );
         printf ( "Samuel Lima" );
         textcolor ( BLACK );
         gotoxy ( 17 , 19 );
         printf ( "sa_sp10@hotmail.com" );
         Sleep ( 1800 );
         textcolor ( LIGHTRED );
         gotoxy ( 36 , 23 );
         printf ( "MUITO OBRIGADO" );
         getch ( );
         exit ( 0 );
     }
     gotoxy ( 17 , 7 );
     textcolor ( LIGHTRED );
     printf ( "A" );
     textcolor ( LIGHTBLUE );
     printf ( " - Chamar a função " );
     textcolor ( LIGHTRED );
     printf ( "A" );
     gotoxy ( 17 , 9 );
     textcolor ( LIGHTRED );
     printf ( "B" );
     textcolor ( LIGHTBLUE );
     printf ( " - Chamar a função " );
     textcolor ( LIGHTRED );
     printf ( "B" );
     gotoxy ( 17 , 11 );
     textcolor ( LIGHTRED );
     printf ( "C" );
     textcolor ( LIGHTBLUE );
     printf ( " - Chamar a função " );
     textcolor ( LIGHTRED );
     printf ( "C" );
     gotoxy ( 17 , 13 );
     textcolor ( LIGHTRED );
     printf ( "D" );
     textcolor ( LIGHTBLUE );
     printf ( " - Chamar a função " );
     textcolor ( LIGHTRED );
     printf ( "D" );
     gotoxy ( 17 , 15 );
     textcolor ( LIGHTRED );
     printf ( "E" );
     textcolor ( LIGHTBLUE );
     printf ( " - Sair do programa " );
     getch ( );
}
void put ( int x , int y ) {
     textcolor ( BLACK );
     gotoxy ( x , y );
     printf ( "\x1a " );
}
void put2 ( int x , int y ) {
     textcolor ( BLACK );
     gotoxy ( x , y );
     printf ( "\x1b " );
}
void put3 ( int x , int y ) {
     textcolor ( BLACK );
     gotoxy ( x , y );
     printf ( "\x19 " );
}
void put4 ( int x , int y ) {
     textcolor ( BLACK );
     gotoxy ( x , y );
     printf ( "\x18 " );
}
int main ( ) {
     system ( "title SUPER MENU - LINGUAGEM C" );
     int x = 2, y = 2, ctr = 0;
     Janela5 ( );
     put ( x , y );
     Mov_Tecla ( x , y );
     while ( ctr != 1 )
         switch ( _getch ( ) ) {
              case 77:
                   if ( x >= 2 && x < 77 ) {
                        gotoxy ( x , y );
                        printf ( " " );
                        x++;
                   }
                   put ( x , y );
                   Mov_Tecla ( x , y );
                   break;
              case 75:
                   if ( x > 2 && x < 79 ) {
                        gotoxy ( x , y );
                        printf ( " " );
                        x--;
                   }
                   put2 ( x , y );
                   Mov_Tecla ( x , y );
                   break;
              case 72:
                   if ( y <= 25 && y > 2 ) {
                        gotoxy ( x , y );
                        printf ( " " );
                        y--;
                   }
                   put4 ( x , y );
                   Mov_Tecla ( x , y );
                   break;
              case 80:
                   if ( y < 24 && y >= 2 ) {
                        gotoxy ( x , y );
                        printf ( " " );
                        y++;
                   }
                   put3 ( x , y );
                   Mov_Tecla ( x , y );
                   break;
              case 27:
                   ctr = 1;
                   break;
              default:
                   textcolor ( LIGHTRED );
                   gotoxy ( 24 , 20 );
                   printf ( "No menu só use as setas do teclado " );
                   Sleep ( 1800 );
                   gotoxy ( 24 , 20 );
                   clreol ( );
                   main ( );
                   break;
         }
     return ( 0 );
}