Ir ao conteúdo

Posts recomendados

Postado

Menu Selecionável

 

Neste tutorial você vai aprender a criar um menu selecionável no CMD. Utilizando as setas direcionais para cima e para baixo, o usuário irá poder escolher a opção desejada teclando ENTER.

 

Requisitos:

  • Biblioteca <conio2.h>

          ↳ Caso não queira fazer a utilização dessa biblioteca, irei mostrar outra forma de usar a função para criar o menu.

 

 

Código:

#include <conio2.h>
#include <locale.h>

void main(){
	setlocale(LC_ALL, "portuguese");
	
	//Declarações
	
	int x=42, y=15, tecla=0;
	//Já atribui o valor x e y de onde a seta irá começar
	
	//Instruções
	
	gotoxy(44,15);printf("ANIVERSARIANTES");
	gotoxy(47,17);printf("PESQUISAR");
	gotoxy(47,21);printf("ADICIONAR");
	gotoxy(48,23);printf("REMOVER");
	
	selecao(x, y, tecla);
	
}


void selecao(int x, int y, int tecla){

	while(tecla!=13){	//Enquanto o usuario não pressionar ENTER(ASCII: 13) ele vai permanecer nas instruções abaixo
		
		textcolor(WHITE);gotoxy(x,y);printf("»"); //Essa seta irá se movimentar, pois em gotoxy está definido x e y que irão receber os valores quando as teclas forem pressionadas. Função textcolor pertence a biblioteca conio2.h
		tecla=getch();	//variavel tecla irá receber a tecla pressionada.
		
		if(tecla==72){	//Se a tecla for a seta para cima (ASCII: 72)
			gotoxy(x,y);printf(" ");	//Aqui irá limpar a seta da opção anterior
			y=y-2;	//A seta irá pular duas linhas, pois coloquei as opções de 2 em 2
		}
		
		if(tecla==80){	//Se a tecla for a seta para baixo (ASCII: 80)
			gotoxy(x,y);printf(" ");	//Aqui irá limpar a seta da opção anterior
			y=y+2;	//A seta irá pular duas linhas, pois coloquei as opções de 2 em 2
		}
		
		
		//Aqui faz com que a seta não passe pelo meio das 4 opções, tive que verificar qual seta está sendo clicado para adicionar ou remover 2 valores de y
		if(y==19 && tecla==72){
			y=y-2;
		}
		if(y==19 && tecla==80){
			y=y+2;
		}
		
		
		//Aqui fará com que a seta não saia do menu, indo de aniversario para remover e de remover para aniversario
		if(y==13 && tecla==72){
			y=23;
		}
		if(y==25 && tecla==80){
			y=15;
		}
		
		
		
		//Agora vamos tornar isso melhor, vamos fazer com que quando a seta estiver na opção, a mesma mude de cor
		if(y==15){
			textcolor(LIGHTCYAN);gotoxy(44,15);printf("ANIVERSARIANTES");
		}else{
			textcolor(WHITE);gotoxy(44,15);printf("ANIVERSARIANTES");
		}
		if(y==17){
			textcolor(LIGHTCYAN);gotoxy(47,17);printf("PESQUISAR");
		}else{
			textcolor(WHITE);gotoxy(47,17);printf("PESQUISAR");
		}
		if(y==21){
			textcolor(LIGHTCYAN);gotoxy(47,21);printf("ADICIONAR");
		}else{
			textcolor(WHITE);gotoxy(47,21);printf("ADICIONAR");
		}
		if(y==23){
			textcolor(LIGHTCYAN);gotoxy(48,23);printf("REMOVER");
		}else{
			textcolor(WHITE);gotoxy(48,23);printf("REMOVER");
		}
		
	}
	
}

 

 

Imagens:

2VINdM6.png

 

8xENwZf.png

 

 

 

Obs: Caso não queira fazer a utilização da biblioteca <conio2.h>, basta criar a função gotoxy da seguinte forma

 

#include <windows.h>

void gotoxy(int x, int y) {
    COORD c;
    c.X = x;
    c.Y = y;
    SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}

 

  • Curtir 1
  • 4 anos depois...
Postado

@F1rmeza   na imagem tem uma palavra "AGENDA" ,  em caracteres Gigantes  ,  e no seu código não aparece ela ,  e a biblkioteca conio2 e a conio também não fazem parte das bibliotecas padrão da linguagem C,  e assim pode funcionar em alguns dispositivos , mas não em outros , e melhor então não usa-la mesmo , e aí usando esse código da função gotoxy vai precisar usar a biblioteca "windows.h" ,  e assim também vai precisar criar outra função substituir a textcolor ,  e que pode bem ser essa:

void gotoxy( int x , int y )
{
  SetConsoleCursorPosition( _h , ( COORD )  { x , y } );
}
void textcolor( int letras )
{
  SetConsoleTextAttribute ( _h , letras + ( 0 << 4));
}

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...