Advertisement
LACabeza

EncriptaTexto

May 1st, 2012
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 18.71 KB | None | 0 0
  1. /*
  2.   Name: Projeto de Segurança de Dados e Informações - 17/04/2012
  3.   Copyright: GNU GPL v2
  4.   Autores:
  5.       Alysson de Azevedo  - RA 101528,
  6.       Luiz de Freitas     - RA
  7.       Gustavo Germano     - RA
  8.       Sandro Pereira      - RA
  9.       Silvio Hashimoto    - RA   Date: 27/04/12 15:41
  10.   Description:
  11.       Programa para criptografar e descriptografar arquivos texto.
  12.     Modo de Uso:
  13.       Para usar o programa, é necessário possuir um login e uma senha, que pode
  14.       ser criado utilizando a opção disponível no menu inicial.
  15.       Após informar corretamente o login e senha, será possível utilizar o
  16.       sistema para criptografar e/ou descriptografar o arquivo de texto desejado.
  17.  
  18.     Variáveis:
  19.       O usuário seleciona a opção criptografar, digita o nome do arquivo .txt que quer criptografar e
  20.       através de uma senha (chave) é criado um arquivo criptografado.
  21.       Para descriptografar, seleciona a opção descriptografar, digita o nome do arquivo criptografado,
  22.       informa a senha e obtém o arquivo conforme o original.
  23.  */
  24.  
  25. #include <stdio.h>
  26. #include <stdlib.h>
  27. #include <string.h>
  28. #include <conio.c>
  29.  
  30. // Declaração de variáveis principais
  31. #define H 3
  32. char fnLogin [50] = "encriptatexto.dat";
  33. FILE *arqLogin, *arqEntrada, *arqSaida;
  34. typedef struct LOGIN {
  35.   char user[31];
  36.   char pass[31];
  37. } LOGIN;
  38.  
  39. // Declaração de funções principais
  40. int  askLogin  ( LOGIN* );
  41. int  seekLogin  ( char*, LOGIN* );
  42. int  doLogin   ( void );
  43. int  newLogin  ( void );
  44.  
  45. int  abrirArqs  ( int );
  46. void fecharArqs ( void );
  47. int  txtToCrp   ( char* );
  48. int  crpToTxt   ( char* );
  49. void byteToHexa ( unsigned char*, unsigned char );
  50. void hexaToByte ( unsigned char*, unsigned char* );
  51.  
  52. // Declaração de funções descritivas
  53. void showAjuda(int);
  54.  
  55. // Declaração de variáveis auxiliares - Disposição dos objetos na tela
  56. int yS=1,   /* Linha Horizontal Superior  */
  57.     yM=11,  /* Linha Horizontal do Meio, deve ser maior que yS e menor que yI*/
  58.     yI=24,  /* Linha Horizontal Inferior  */
  59.     xE=2,   /* Linha Vertical da Esquerda */
  60.     xM=36,  /* Linha Vertical do Meio, deve ser maior que xE e menor que yR*/
  61.     xR=79,  /* Linha Vertical da Direita  */
  62.   //coresArea[2]  = {TextColor,Background}
  63.     coresMenu[2]  = {WHITE,LIGHTBLUE}, /* Cor do Quadro Menu */
  64.     coresAjuda[2] = {BLUE,LIGHTRED},   /* Cor do Quadro Ajuda */
  65.     coresCorpo[2] = {BLACK,WHITE},     /* Cor do Quadro Corpo */
  66.     coresBorda[2] = {WHITE,BLACK};     /* Cor da Borda */
  67.  
  68. // Declaração de funções auxiliares
  69. void leValor(char*, void*);
  70. void moldura(void);       //Redesenha a tela, bordas e cores
  71. void corTexto(char *Area); //Define a cor do texto que será exibido
  72.  
  73. int main(int argc, char** argv){
  74.   int opc, resp, logado = -1;
  75.   char passArq[50];
  76.  
  77.   do {
  78.     moldura();
  79.     showAjuda(0); //0: Informações
  80.    
  81.     // Aqui escrevemos o texto que ficará no Quadro Menu
  82.     corTexto("menu");
  83.     gotoxy(xE+3,yS+1); printf("MENU");
  84.     if (logado != 0) { //Deslogado
  85.       gotoxy(xE+3,yS+3); printf("1: Login");
  86.       gotoxy(xE+3,yS+4); printf("2: Criar usu%crio",160);
  87.       gotoxy(xE+3,yS+8); printf("0: Sair");
  88.     }
  89.     else { //Logado
  90.       gotoxy(xE+3,yS+3); printf("1: Criptografar");
  91.       gotoxy(xE+3,yS+4); printf("2: Decriptografar");
  92.       gotoxy(xE+3,yS+8); printf("0: Deslogar");
  93.     }      
  94.     gotoxy(xE+3,yS+5); printf("3: Sobre o programa");
  95.     gotoxy(xE+3,yS+6); printf("4: Sobre a chave");
  96.     gotoxy(xE+3,yS+7); printf("5: Equipe");
  97.     gotoxy(xE+3,yS+9); printf("Op%c%co: _",135,198);
  98.     gotoxy(xE+10,yS+9);leValor("%d", &opc);
  99.  
  100.     //  Aqui escrevemos os textos que ficarão no Quadro Corpo
  101.     corTexto("corpo");
  102.     //gotoxy(xE+3,yM+2); printf("");
  103.     switch (opc) {
  104.       case 0:
  105.         if (logado == 0){ //se estiver logado, apenas desconecta
  106.           logado = -1;
  107.           opc = -1;
  108.         }
  109.         else {
  110.           gotoxy(xE+3,yM+3);printf("Lembre-se: Seguran%ca %c uma quest%co de tempo! Bye. o/",135,130,198);
  111.           gotoxy(xE+3,yM+4);printf("Aperte [ENTER] para sair.");
  112.           gotoxy(80,25);  getche(); //Para no final do programa
  113.         }
  114.         break;
  115.       case 1:
  116.         if (logado != 0){ //Se não estiver logado, chama a função de login
  117.           showAjuda(1); //1: Login
  118.           logado = doLogin(); //Retorna 0 quando logado com sucesso
  119.           if (logado == -1) { // Se não conseguir abrir o arquivo de configuração
  120.             opc = 0;
  121.             gotoxy(xE+3,23); printf("Aperte [ENTER] para sair.");
  122.             gotoxy(80,25);  getche(); //Para no final do programa
  123.           } else
  124.           if (logado == 1) {
  125.             gotoxy(80,25);  getche(); //Para no final do programa
  126.           }
  127.         }
  128.         else {
  129.           showAjuda(3); //4: Criptografar
  130.           if (abrirArqs(opc) == 1) continue; //se abrirArqs retornar 1, é pq deu erro
  131.           gotoxy(xE+3,yM+5); printf("Digite uma senha: ");
  132.           leValor("%[^\n]",passArq);
  133.           txtToCrp(passArq);
  134.           fecharArqs();
  135.           gotoxy(80,25);  getche(); //Para no final do programa
  136.         }
  137.         break;
  138.       case 2:
  139.         if (logado != 0){ //Se não estiver logado, chama a função de login
  140.           showAjuda(2); //2: Criar usuário
  141.           resp = newLogin();
  142.           if (resp == -1) { // Se não conseguir abrir o arquivo de configuração
  143.             opc = 0;
  144.             gotoxy(xE+3,23); printf("Aperte [ENTER] para sair.");
  145.           }
  146.           gotoxy(80,25);  getche(); //Para no final do programa
  147.         }
  148.         else {
  149.           showAjuda(4); //4: Descriptografar
  150.           if (abrirArqs(opc) == 1) continue; //se abrirArqs retornar 1, é pq deu erro
  151.           gotoxy(xE+3,yM+5); printf("Digite a senha: ");
  152.           leValor("%[^\n]",passArq);
  153.           crpToTxt(passArq);
  154.           fecharArqs();
  155.           gotoxy(80,25);  getche(); //Para no final do programa
  156.         }
  157.         break;
  158.       case 3:
  159.         gotoxy(xE+3,yM+3); printf("Sobre o programa:");
  160.         gotoxy(xE+3,yM+5); printf("O programa para criptografar e descriptografar foi desenvolvido em sala ");
  161.         gotoxy(xE+3,yM+6); printf("de aula pelos alunos do 5%c semestre de Inform%ctica. ",167,160);
  162.         gotoxy(80,25);  getche(); //Para no final do programa
  163.         break;
  164.       case 4:
  165.         gotoxy(xE+3,yM+3); printf("A chave %c um mist%crio!",130,130);
  166.         gotoxy(80,25);  getche(); //Para no final do programa
  167.         break;
  168.       case 5:
  169.         gotoxy(xE+3,yM+3); printf("Alysson Azevedo");
  170.         gotoxy(xE+3,yM+4); printf("Luiz Roberto de Freitas");
  171.         gotoxy(xE+3,yM+5); printf("Gustavo Germano");
  172.         gotoxy(xE+3,yM+6); printf("Sandro S%crgio Pereira",130);
  173.         gotoxy(xE+3,yM+7); printf("Silvio Hashimoto");  
  174.         gotoxy(80,25);  getche(); //Para no final do programa    
  175.         break;
  176.       default:
  177.         gotoxy(xE+3,yM+3); printf("Op%c%co inv%clida!",135,198,160);
  178.         gotoxy(80,25);  getche(); //Para no final do programa
  179.         break;
  180.     }
  181.   }
  182.   while(opc!=0);
  183.   return 0;
  184. }
  185.  
  186.   int askLogin(LOGIN *login){
  187.   LOGIN aLogin;
  188.   char hex[H] = "";
  189.   int i;
  190.   strcpy(aLogin.user,"");
  191.   strcpy(aLogin.pass,"");
  192.   strcpy(login->user,"");
  193.   strcpy(login->pass,"");
  194.   gotoxy(xE+3,yM+3); printf("Digite seu usu%crio:               ",160);
  195.   gotoxy(xE+3,yM+4); leValor("%[^\n]",aLogin.user);
  196.   gotoxy(xE+3,yM+4); printf("                                  ");
  197.   if (strcmp(aLogin.user,"") == 0) {
  198.     gotoxy(xE+3,yM+3); printf("Usu%crio deve ser preenchido.      ",160);
  199.     gotoxy(xE+3,yM+4); printf("Aperte [ENTER] para voltar.       ");
  200.     return 1;
  201.   }
  202.   if (strlen(aLogin.user) >= 11) {
  203.     gotoxy(xE+3,yM+3); printf("Nome do usu%crio deve ter menos de 10 caracteres.",160);
  204.     gotoxy(xE+3,yM+4); printf("Aperte [ENTER] para voltar.       ");
  205.     return 1;
  206.   }
  207.  
  208.   gotoxy(xE+3,yM+3); printf("Digite sua senha:                 ");
  209.   textcolor(coresCorpo[1]); //Deixa a senha com a mesma cor do fundo da tela
  210.   gotoxy(xE+3,yM+4); leValor("%[^\n]",aLogin.pass);
  211.   textcolor(coresCorpo[0]); //Volta a exibir os textos com a cor normal
  212.   if (strlen(aLogin.pass) >= 11) {
  213.     gotoxy(xE+3,yM+3); printf("A senha deve ter menos de 10 caracteres.");
  214.     gotoxy(xE+3,yM+4); printf("Aperte [ENTER] para voltar.       ");
  215.     return 1;
  216.   }
  217.   gotoxy(xE+3,yM+5);
  218.  
  219.   //Sem criptografia
  220. //  strcpy(login->user,aLogin.user);
  221. //  strcpy(login->pass,aLogin.pass);
  222.  
  223.   //Com criptografia
  224.   for (i=0;i<strlen(aLogin.user);i++) {
  225.     byteToHexa(hex,aLogin.user[i]);//Converte a letra pra Hex
  226.     strcat(login->user,hex);
  227.   }
  228.   for (i=0;i<strlen(aLogin.pass);i++) {
  229.     byteToHexa(hex,aLogin.pass[i]);//Converte a letra pra Hex
  230.     strcat(login->pass,hex);
  231.   }
  232.   return 0;
  233. }
  234.  
  235. int seekLogin(char *user, LOGIN *login){
  236.   LOGIN sLogin;
  237.   char hex[H], userCrp[31] = "";
  238.   int i;
  239.   if (!(arqLogin = fopen(fnLogin,"rb"))) //se não conseguir abrir o arquivo em modo de escrita
  240.     return -1;
  241.   strcpy(login->user,"");
  242.   strcpy(login->pass,"");
  243.  
  244.   do {
  245.     fread(&sLogin, sizeof(LOGIN),1,arqLogin); //Lê a quantidade H de chars para montar o valor hexa
  246.     if (feof(arqLogin)) continue; //Sai ao alcançar EOF
  247.     if (strcmp(user,sLogin.user) == 0) {
  248.       strcpy(login->user,sLogin.user);
  249.       strcpy(login->pass,sLogin.pass);
  250.       break;
  251.     }
  252.   } while (!feof(arqLogin));
  253.   fclose(arqLogin);
  254.   return 0;
  255. }
  256.  
  257. int doLogin(void){
  258.   LOGIN aLogin,sLogin;
  259.   if (askLogin(&aLogin) == 1)
  260.     return 1; //Se der alguma coisa errada com o que o user digitar
  261.   if (seekLogin(aLogin.user,&sLogin) == -1){
  262.     corTexto("erro");
  263.     gotoxy(xE+3,22);printf("Erro! Imposs%cvel abrir o arquivo de configura%c%co! ",161,135,198);
  264.   }
  265.  
  266.   if ((strcmp(aLogin.user,sLogin.user) == 0) && (strcmp(aLogin.pass,sLogin.pass) == 0))
  267.     return 0;
  268.   else {
  269.     gotoxy(xE+3,yM+3); printf("Usu%crio ou senha incorretos.     ",160);
  270.     gotoxy(xE+3,yM+4); printf("Aperte [ENTER] para voltar.       ");
  271.     return 1;
  272.   }
  273. }
  274.  
  275. int newLogin(void){
  276.   LOGIN aLogin,sLogin;
  277.   if (askLogin(&aLogin) == 1) {//O usuário e senha não foram digitados corretamente
  278.     fclose(arqLogin);
  279.     return 1;
  280.   }
  281.  
  282.   seekLogin(aLogin.user,&sLogin);
  283.  
  284.   if (strcmp(aLogin.user,sLogin.user) == 0) {
  285.     gotoxy(xE+3,yM+3); printf("Usu%crio indispon%cvel. Tente novamente.",160,161);
  286.     gotoxy(xE+3,yM+4); printf("Aperte [ENTER] para voltar.       ");
  287.     fclose(arqLogin);
  288.     return 1;
  289.   }
  290.   if (!(arqLogin = fopen(fnLogin,"ab")))
  291.     return -1;
  292.  
  293.   fwrite(&aLogin, sizeof(LOGIN),1,arqLogin);
  294.   gotoxy(xE+3,yM+3); printf("Usu%crio cadastrado com sucesso.   ",160);
  295.   gotoxy(xE+3,yM+4); printf("Aperte [ENTER] para voltar.        ");
  296.   fclose(arqLogin);
  297.   return 0;
  298. }
  299.  
  300. int abrirArqs(int opc){
  301.   char nomeEntrada[250];
  302.   char nomeSaida[255];
  303.   //Digitar o nome do arquivo (completo, com extensão e tudo)
  304.   gotoxy(xE+3,yM+3); printf("Digite o nome do arquivo: ");
  305.   leValor("%[^\n]",nomeEntrada);
  306.   //Define nomes dos arquivos
  307.   if (opc == 1) { //Opc = 1: Encriptogravar
  308.     strcpy(nomeSaida,nomeEntrada); //arquivo Entrada = test.txt
  309.     strcat(nomeSaida,".crp");  //arquivo Saida = test.txt.crp
  310.   } else { //Opc = 2: Descriptogravar
  311.     strcpy(nomeSaida,nomeEntrada); //arquivo Entrada = test.txt.crp
  312.     strcat(nomeEntrada,".crp");  //arquivo Saida = test.txt
  313.   }
  314.   //Abre o arquivo de entrada em modo de leitura
  315.   if (!(arqEntrada = fopen(nomeEntrada,"rb"))) {
  316.       gotoxy(xE+3,yM+8);printf("Erro! Imposs%cvel abrir o arquivo de entrada!",141);
  317.       return 1;
  318.   }
  319.   //Abre o arquivo de saida em modo de escrita
  320.   if (!(arqSaida = fopen(nomeSaida,"wb"))) {
  321.       fecharArqs();
  322.       gotoxy(xE+3,yM+8); printf("Erro! N%co foi poss%cvel criar arquivo de saida!",198,141);
  323.       return 1;
  324.   }
  325.   return 0;
  326. }
  327.  
  328. void fecharArqs( void ) {
  329.   if (arqEntrada != NULL) fclose(arqEntrada);
  330.   if (arqSaida != NULL) fclose(arqSaida);
  331. }
  332.  
  333. int txtToCrp( char *pSenha ){
  334.   char chave, letra, hex[H];
  335.   int t,p,i = 0;
  336.   if ((arqEntrada == NULL) || (arqSaida == NULL)) {
  337.     gotoxy(xE+3,yM+8); printf("Erro: N%co ser%c poss%cvel desencriptografar o arquivo.",198,160,141);
  338.     //return 1;
  339.   }
  340.   t = strlen(pSenha);
  341.   do {
  342.     fread(&letra,sizeof(char),1,arqEntrada);//Lê a proxima char do arquivo
  343.     if (feof(arqEntrada)) continue; //Sai ao alcançar EOF
  344.     if (t > 0) {//Criptografa
  345.       p = t - i % t - 1;//Pega o index para a letra da senha, em ordem invertida
  346.       chave = pSenha[p];
  347.       letra = letra + chave;
  348.     }
  349.     byteToHexa(hex,letra);//Converte a letra pra Hex
  350.     fwrite(hex, sizeof(char),H,arqSaida);
  351.     i++;
  352.   } while (!feof(arqEntrada));
  353.   gotoxy(xE+3,yM+8); printf("Arquivo encriptografado com sucesso.");
  354.   //return 0;
  355. }
  356.  
  357. int crpToTxt(char *pSenha){
  358.   char chave, letra, hex[H];
  359.   int t,p,i = 0;
  360.   if ((arqEntrada == NULL) || (arqSaida == NULL)) {
  361.     gotoxy(xE+3,yM+8); printf("Erro: N%co ser%c poss%cvel desencriptografar o arquivo.",198,160,141);
  362.    // return 1;
  363.   }
  364.   t = strlen(pSenha); //Pega o tamanho da senha
  365.   do {
  366.     fread(hex, sizeof(char),H,arqEntrada); //Lê a quantidade H de chars para montar o valor hexa
  367.     if (feof(arqEntrada)) continue; //Sai ao alcançar EOF
  368.     hexaToByte(&letra,hex);////Converte a letra pra Dec
  369.     if (t > 0) {//Descritografa
  370.       p = t - i % t - 1;//Pega o index para a letra da senha, em ordem invertida
  371.       chave = pSenha[p];
  372.       letra = letra - chave;
  373.     }
  374.     fwrite(&letra, sizeof(char),1,arqSaida);
  375.     i++;
  376.   } while (!feof(arqEntrada));
  377.   gotoxy(xE+3,yM+8); printf("Arquivo descriptografado com sucesso.");
  378.  
  379.   //return 0;
  380. }
  381.  
  382. void byteToHexa (unsigned char *hex, unsigned char letra){
  383.   char vet[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
  384.   int val = letra,aux[H], i;
  385.   for (i = H - 1; i >= 0; --i) {
  386.     aux[i] = val % 16;
  387.     val = (val - aux[i]) / 16;
  388.     hex[i] = vet[aux[i]];
  389.   }
  390. }
  391.  
  392. void hexaToByte (unsigned char *letra, unsigned char *hex){
  393.   int aux[H], i;
  394.   for (i = 0; i < H; i++){
  395.     if ((hex[i] >= '0') && (hex[i] <= '9'))
  396.       aux[i] = hex[i] - '0';
  397.     else
  398.     if ((hex[i] >= 'A') && (hex[i] <= 'F'))
  399.       aux[i] = hex[i] - 'A' + 10;
  400.   }
  401.   *letra = (aux[0] * 16 * 16) + (aux[1] * 16) + aux[2];
  402. }
  403.  
  404. void showAjuda(int id){
  405.   // Aqui escrevemos o texto que ficará no Quadro Ajuda
  406.   corTexto("ajuda");
  407.   switch (id){
  408.     case 1:
  409.       gotoxy(xM+3,yS+1); printf("LOGIN                                  ");
  410.       gotoxy(xM+3,yS+4); printf("Para acessar o programa, %c necess%crio",130,160);
  411.       gotoxy(xM+3,yS+5); printf("um usu%crio e uma senha.               ",160);
  412.       gotoxy(xM+3,yS+6); printf("Caso n%co possua, selecione a op%c%co: ",198,135,198);
  413.       gotoxy(xM+3,yS+7); printf("%c2: Criar usu%crio%c no menu anterior.",34,160,34);
  414.       break;
  415.     case 2:
  416.       gotoxy(xM+3,yS+1); printf("CRIAR NOVO USU%CRIO                    ",181);
  417.       gotoxy(xM+3,yS+4); printf("Digite um nome para seu novo usu%crio. ",160);
  418.       gotoxy(xM+3,yS+5); printf("Ele deve ter menos de 10 letras e n%co ",198);
  419.       gotoxy(xM+3,yS+6); printf("conter caracteres especiais nem        ");
  420.       gotoxy(xM+3,yS+7); printf("espa%cos em brancos.                   ",135);
  421.       break;
  422.     case 3:
  423.       gotoxy(xM+3,yS+1); printf("CRIPTOGRAFAR UM ARQUIVO TEXTO          ");
  424.       gotoxy(xM+3,yS+4); printf("Digite o nome do arquivo desejado.     ");
  425.       gotoxy(xM+3,yS+5); printf("Ex: arquivo_texto.txt                  ");
  426.       gotoxy(xM+3,yS+6); printf("Ser%c criado um arquivo j%c cripto-    ",160,160);
  427.       gotoxy(xM+3,yS+7); printf("grafado. Ex: arquivo_texto.txt.crp     ");
  428.       break;
  429.     case 4:
  430.       gotoxy(xM+3,yS+1); printf("DESCRIPTOGRAFAR UM ARQUIVO TEXTO       ");
  431.       gotoxy(xM+3,yS+4); printf("Digite o nome do arquivo desejado.     ");
  432.       gotoxy(xM+3,yS+5); printf("Ex: arquivo_texto.txt                  ");
  433.       gotoxy(xM+3,yS+6); printf("O arquivo desejado ser%c descripto-    ",160);
  434.       gotoxy(xM+3,yS+7); printf("grado.                                 ");
  435.       break;
  436.     default:
  437.       gotoxy(xM+3,yS+1); printf("FATEC-INFORM%CTICA                     ",181);
  438.       gotoxy(xM+3,yS+4); printf("Projeto de Seguran%ca de Dados.        ",135);
  439.       gotoxy(xM+3,yS+5); printf("Criptografar e descriptografar         ");
  440.       gotoxy(xM+3,yS+6); printf("arquivos usando algoritmo assim%ctrico.",130);
  441.       gotoxy(xM+3,yS+7); printf("                                       ");
  442.       break;
  443.   }
  444.   corTexto("corpo");
  445. }
  446.  
  447.  
  448. /* Funções auxiliares, Não alterar nada apartir daqui. */
  449.  
  450. //Le um valor, com um scanf comum e limpa o buffer
  451. void leValor(char *mode, void *var){
  452.   scanf(mode, var);
  453.   scanf("%*[^\n]");
  454.   scanf("%*c");
  455. }
  456.  
  457. //Desenha a tela com bordas e cores definidas pelas variaveis
  458. void moldura(){
  459.   int i; //var auxiliar
  460.  
  461.   corTexto("borda");
  462.   clrscr();
  463.  
  464. //Preenche as cores das divisoes
  465.   for (i=yS+1;i<yI;i++)
  466.   {
  467.     if (i<yM)
  468.     {
  469.       gotoxy(xE+2,i); corTexto("menu");  clreol();
  470.       gotoxy(xM-1,i); corTexto("borda"); printf(" ");
  471.       gotoxy(xM+1,i); corTexto("ajuda"); clreol();
  472.       gotoxy(xM+1,i); corTexto("borda"); printf(" ");
  473.     }
  474.     else
  475.     {
  476.       gotoxy(xE+2,i); corTexto("corpo"); clreol();
  477.     }
  478.     gotoxy(xR-1,i); corTexto("borda"); printf(" ");
  479.   }
  480.  
  481. //Preenche linhas horizontais
  482.   for (i=xE;i<=xR;i++)
  483.   {
  484.     gotoxy(i,yS);    printf("%c",205);
  485.     gotoxy(i,yS+2);  printf("%c",205);
  486.     gotoxy(i,yM);    printf("%c",205);
  487.     gotoxy(i,yI);    printf("%c",205);
  488.   }
  489.   //preenche linhas verticais
  490.   for (i=yS;i<=yI;i++)
  491.   {
  492.     gotoxy(xE,i);    printf("%c",186);
  493.     if (i>1 && i<yM)
  494.     {
  495.       gotoxy(xM,i);   printf("%c",186);
  496.     }
  497.     gotoxy(xR,i);   printf("%c",186);
  498.     gotoxy(xR+1,i); clreol(); //Corrije cor no final da borda
  499.   }
  500.   //preenche quinas das linhas horizontais e verticais
  501.   gotoxy(xE,yS);  printf("%c",201);
  502.   gotoxy(xM,yS);  printf("%c",203);
  503.   gotoxy(xR,yS);  printf("%c",187);
  504.   gotoxy(xE,yS+2);printf("%c",204);
  505.   gotoxy(xM,yS+2);printf("%c",206);
  506.   gotoxy(xR,yS+2);printf("%c",185);
  507.   gotoxy(xE,yM);  printf("%c",204);
  508.   gotoxy(xM,yM);  printf("%c",202);
  509.   gotoxy(xR,yM);  printf("%c",185);
  510.   gotoxy(xE,yI);  printf("%c",200);
  511.   gotoxy(xR,yI);  printf("%c",188);
  512.   gotoxy(1,25);   clreol(); //Limpa a ultima linha
  513. }
  514.  
  515. void corTexto(char *Area)
  516. {
  517.   if (strcmp(Area,"menu") == 0){
  518.     textcolor(coresMenu[0]);
  519.     textbackground(coresMenu[1]);
  520.   } else
  521.   if (strcmp(Area,"ajuda") == 0){
  522.     textcolor(coresAjuda[0]);
  523.     textbackground(coresAjuda[1]);
  524.   } else
  525.   if (strcmp(Area,"corpo") == 0){
  526.     textcolor(coresCorpo[0]);
  527.     textbackground(coresCorpo[1]);
  528.   } else
  529.   if (strcmp(Area,"borda") == 0){
  530.     textcolor(coresBorda[0]);
  531.     textbackground(coresBorda[1]);
  532.   } else
  533.   if (strcmp(Area,"erro") == 0){
  534.     textcolor(LIGHTRED);
  535.     textbackground(coresCorpo[1]);
  536.   }
  537. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement