Ir para conteúdo
Fórum Script Brasil

duarte_valente

Membros
  • Total de itens

    25
  • Registro em

  • Última visita

Sobre duarte_valente

  • Data de Nascimento 18/09/1990

Perfil

  • Gender
    Male
  • Location
    Aveiro,Portugal

duarte_valente's Achievements

0

Reputação

  1. Desculpe lá mais uma vez, tou a ter um problema ..o meu jogo esta quase feito e não consigo que isto dê. Compile este código e Vá ao Novo jogo,1-facil que abrirá um novo jogo, tente jogar na tabela do Sudoku com as teclas W-cima,A-esquerda,D-direita e S-baixo.Os numeros são so dos teclados,só aceita de 1 a 9. O meu problema agora é que se eu escrever o numero num dos quadrados já predefenidos do jogo, ou seja escrever um numero por cima do outro no qual este seja os numeros predefenidos da quela dificuldade o numero modifica e logo assim o jogados confunde o jogo e não sabe jogar. O que me ajuda?,para que os numeros predefenidos não mudem??..o que posso fazer?? aqui esta o meu código: #include <stdio.h> #include <termios.h> #include <unistd.h> #include <string.h> #include <time.h> #include <stdlib.h> #define END_FILE_CHARACTER 0x04 /* ctrl-d is unix-style eof input key*/ #define RESET 0 #define BRIGHT 1 #define DIM 2 #define UNDERLINE 3 #define BLINK 4 #define REVERSE 7 #define HIDDEN 8 #define BLACK 0 #define RED 1 #define GREEN 2 #define YELLOW 3 #define BLUE 4 #define MAGENTA 5 #define CYAN 6 #define WHITE 7 void textcolor(int attr, int fg, int bg) { char command[13]; /* Command is the control command to the terminal */ sprintf(command, "%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40); printf("%s", command); } int gotoxy(int x, int y) { char essq[100];// String variable to hold the escape sequence char xstr[100];// Strings to hold the x and y coordinates char ystr[100];// Escape sequences must be built with characters /* ** Convert the screen coordinates to strings */ sprintf(xstr, "%d", x); sprintf(ystr, "%d", y); /* # ** Build the escape sequence (vertical move) # */ essq[0] = ''; strcat(essq, "33["); strcat(essq, ystr); /* ** Described in man terminfo as vpa=\E[%p1%dd ** Vertical position absolute */ strcat(essq, "d"); /* ** Horizontal move ** Horizontal position absolute */ strcat(essq, "33["); strcat(essq, xstr); // Described in man terminfo as hpa=\E[%p1%dG strcat(essq, "G"); /* ** Execute the escape sequence ** This will move the cursor to x, y */ printf("%s", essq); } void mostra_tabuleiro() { int s; gotoxy(1,3); { int a; a = 1; while( a <= 4 ) { textcolor(BRIGHT, MAGENTA, BLACK); printf("\t###########################################\n\n\n\n\n\n\n\n"); a++; } } gotoxy(1,4); { int b; b = 1; while( b <= 12) { textcolor(BRIGHT, RED, BLACK); printf("\t#|---|---|---|#|---|---|---|#|---|---|---|#\n\n"); b++; } } gotoxy(1,5); { int c; c = 1; while( c <= 3) { textcolor(BRIGHT, GREEN, BLACK); printf("\t#| | | |#| | | |#| | | |#\n\n"); c++; } } gotoxy(1,13); { int d; d = 1; while( d <= 3) { textcolor(BRIGHT, GREEN, BLACK); printf("\t#| | | |#| | | |#| | | |#\n\n"); d++; } } gotoxy(1,21); { int e; e = 1; while( e <= 3) { textcolor(BRIGHT, GREEN, BLACK); printf("\t#| | | |#| | | |#| | | |#\n\n"); e++; } } } int menu2() { int r; system("clear"); textcolor(BLACK,BLACK,BLACK); //do //{ textcolor(BRIGHT,WHITE, BLACK); printf("\n\n\n\nNíveis de dificuldade:\n"); textcolor(BRIGHT,BLUE, BLACK); printf("\n1 - Fácil\n2 - Normal (Médio)\n3 - Dificil\n"); textcolor(BRIGHT,GREEN, BLACK); printf("\nQual a dificuldade que pretende?\n\n"); scanf("%d",&r); //} //while(r<1 || r>3); return r; } void preencher() { switch(menu2()) { case 1: { system("clear"); mostra_tabuleiro(); textcolor(BRIGHT, GREEN, BLACK); gotoxy(12,5);//1 printf("1"); gotoxy(26,5);//3 printf("8"); gotoxy(34,7);//14 printf("3"); gotoxy(20,9);//20 printf("8"); gotoxy(40,9);//24 printf("7"); gotoxy(48,9);//26 printf("4"); gotoxy(16,13);//28 printf("8"); gotoxy(30,13);//31 printf("4"); gotoxy(40,13);//33 printf("5"); gotoxy(44,13);//34 printf("6"); gotoxy(20,15);//38 printf("9"); gotoxy(26,15);//39 printf("5"); gotoxy(34,15);//41 printf("2"); gotoxy(40,15);//42 printf("4"); gotoxy(16,17);//46 printf("3"); gotoxy(20,17);//47 printf("5"); gotoxy(30,17);//49 printf("7"); gotoxy(44,17);//52 printf("2"); gotoxy(12,21);//54 printf("6"); gotoxy(20,21);//56 printf("1"); gotoxy(40,21);//60 printf("8"); gotoxy(26,23);//66 printf("3"); gotoxy(34,25);//77 printf("9"); gotoxy(44,25);//79 printf("5"); } break; case 2: { system("clear"); mostra_tabuleiro(); textcolor(BRIGHT, GREEN, BLACK); gotoxy(12,5);//1 printf("9"); gotoxy(34,5);//5 printf("7"); gotoxy(40,5);//6 printf("4"); gotoxy(16,7);//10 printf("3"); gotoxy(20,7);//11 printf("2"); gotoxy(20,9);//20 printf("1"); gotoxy(34,9);//23 printf("8"); gotoxy(40,9);//24 printf("5"); gotoxy(48,9);//26 printf("2"); gotoxy(30,13);//31 printf("4"); gotoxy(34,13);//32 printf("2"); gotoxy(16,15);//37 printf("6"); gotoxy(44,15);//43 printf("4"); gotoxy(26,17);//48 printf("9"); gotoxy(30,17);//49 printf("5"); gotoxy(12,21);//54 printf("8"); gotoxy(20,21);//56 printf("9"); gotoxy(26,21);//57 printf("3"); gotoxy(40,21);//60 printf("2"); gotoxy(40,23);//69 printf("1"); gotoxy(44,23);//70 printf("5"); gotoxy(20,25);//74 printf("3"); gotoxy(26,25);//75 printf("5"); gotoxy(44,25);//79 printf("7"); } break; } } int vit_linhas(int*tab) { int i,j,soma; for(i=0;i<9;i++) //linha a linha { soma=0; for(j=0;j<9;j++) //coluna a coluna soma+=tab[9*i+j]; //somar todas as celulas if(soma!=45) return 0; //devolvemos diferente de vitoria } return 1; //devolvemos vitoria } int vit_colunas(int*tab) { int i,j,soma; for(i=0;i<9;i++) //coluna a coluna { soma=0; for(j=0;j<9;j++) //linha a linha soma+=tab[9*i+j]; //somar todas as celulas if(soma!=45) return 0; //devolvemos a diferença de vitoria } return 1; //devolvemos vitoria } int vit_quadrados(int*tab) { int i; for(i=0;i<8;i++) { if((i/9)%3==0) //linha 0,3,6 { if(i%3==0) //coluna 0,3,6 { if(tab[i]+tab[i+1]+tab[i+2]+tab[i+9]+tab[i+10]+tab[i+11]+tab[i+18]+tab[i+19]+tab[i+20]!=45) return 0; } } } return 1; //devolvemos a vitoria } void desenha_digito (int linha, int coluna, int digito) { int x,y; x=12+linha*4; y=5+coluna*2; if(coluna>=3) { y=7+coluna*2; } if(coluna>=6) { y=9+coluna*2; } if(linha>=3) { x=14+linha*4; } if(linha>=6) { x=16+linha*4; } gotoxy(x,y); textcolor(WHITE,BLACK,BLUE); { printf("%d",digito); } } void desenha_cursor(int linha,int coluna,int digito) { int x,y; x=12+linha*4; y=5+coluna*2; if(coluna>=3) { y=7+coluna*2; } if(coluna>=6) { y=9+coluna*2; } if(linha>=3) { x=14+linha*4; } if(linha>=6) { x=16+linha*4; } gotoxy(x,y); usleep(50); textcolor(WHITE,BLACK,BLUE); { gotoxy(x,y); } } int limpar_ecra1() { int x,y; for(y=1; y<60; y++) { for(x=1; x<160; x++) { gotoxy(x, y); printf(" "); } } } int linux_getch(void) { struct termios oldstuff; struct termios newstuff; int inch; tcgetattr(STDIN_FILENO, &oldstuff); /* save old attributes */ newstuff = oldstuff; newstuff.c_lflag &= ~(ICANON | ECHO); /* reset "canonical" and "echo" flags*/ tcsetattr(STDIN_FILENO, TCSANOW, &newstuff); /* set new attributes */ inch = getchar(); tcsetattr(STDIN_FILENO, TCSANOW, &oldstuff); /* restore old attributes */ if (inch == END_FILE_CHARACTER) { inch = EOF; } return inch; } int colocar_num(void) { int kb_char,cx=0,cy=0, numero,i,a,b,c; float hora,min,sec; int hora1,min1,sec1; int tabuleiro[81]={0}; time_t start,end; float dif; time (&start); while ((kb_char = linux_getch()) != EOF) { time (&end); dif = difftime (end,start); hora=dif/3600; hora1=hora; min=(hora-hora1)*60; min1=min; sec=(min-min1)*60; sec1=sec; gotoxy(65,5); printf("Tempo =%2d:%2d:%2d",hora1,min1,sec1); gotoxy(65,4); printf("o-voltar ao menu"); if(kb_char == 97 && cx >=1) {cx--;desenha_cursor (cx,cy,9*cy+(cx+1));}//Esquerda else if(kb_char == 100 && cx <8){cx++;desenha_cursor (cx,cy,9*cy+(cx-1));}//Dir else if(kb_char == 119 && cy >=1){cy--;desenha_cursor (cx,cy,9*(cy+1)+cx);}//Cima else if(kb_char == 115 && cy < 8){cy++;desenha_cursor (cx,cy,9*(cy-1)+cx);}//Baixo else if(kb_char == 111){limpar_ecra1();main();} else if(kb_char >= 49 && kb_char <= 57) { numero = kb_char-48; i=cy*9+cx; tabuleiro[i]=numero; desenha_digito(cx, cy, numero); } else if(kb_char == 48)break; } time (&end); dif = difftime (end,start); hora=dif/3600; hora1=hora; min=(hora-hora1)*60; min1=min; sec=(min-min1)*60; sec1=sec; gotoxy(65,5); printf("Tempo =%2d:%2d:%2d",hora1,min1,sec1); a=vit_linhas (tabuleiro); b=vit_colunas (tabuleiro); c=vit_quadrados (tabuleiro); if(a*c*b==1) { gotoxy(65,7); printf("***************"); gotoxy(65,8); printf("| Voce ganhou |"); gotoxy(65,9); printf("***************"); } else { gotoxy(65,7); printf("***************"); gotoxy(65,8); printf("| Voce perdeu |"); gotoxy(65,9); printf("***************"); } gotoxy (10,28); return 0; } void fechar() { char retorno[20], comando[30]; FILE *p = popen("ps | grep 'bash' | awk '{print $1}'", "r"); fgets(retorno, 18,p); pclose(p); sprintf(comando, "kill -9 %s", retorno); system(comando); } int limpar_ecra() { int x,y; for(y=1; y<60; y++) { for(x=0; x<43; x++) { gotoxy(x, y); printf(" "); } } } int teclas() { system("clear"); textcolor(BLACK,BLACK,BLACK); gotoxy(44,3); textcolor(BRIGHT,WHITE, BLACK); printf("Teclas do jogo"); gotoxy(44,5); textcolor(BRIGHT,BLUE, BLACK); printf("a=Mover para a esquerda"); gotoxy(44,6); printf("d=Mover para a direita"); gotoxy(44,7); printf("s=Mover para baixo"); gotoxy(44,8); printf("w=Mover para cima"); gotoxy(44,9); printf("p=Sair do jogo"); } int ajuda() { system("clear"); textcolor(BLACK,BLACK,BLACK); gotoxy(44,3); textcolor(BRIGHT,WHITE, BLACK); printf("AS REGRAS DO JOGO"); gotoxy(44,5); textcolor(BRIGHT,BLUE, BLACK); printf("Sudoku é um jogo de raciocínio e lógica. Apesar de ser bastante simples, é divertido e viciante."); gotoxy(44,6); printf("Basta completar cada linha, coluna e quadrado 3x3 com números de 1 a 9,sem repetir."); gotoxy(44,7); printf("Neste jogo não existe nenhum tipo de matemática envolvida."); } int menu() { char resposta; limpar_ecra(); textcolor(BLACK,BLACK,BLACK); gotoxy(1,1); textcolor(BRIGHT,WHITE, BLACK); printf("\n\n********* Menu *********\n"); textcolor(BRIGHT,WHITE, BLACK); printf("\n JOGO DO SUDOKU \n"); textcolor(BRIGHT,BLUE, BLACK); printf("\n\n1-Novo Jogo\n"); textcolor(BRIGHT,BLUE, BLACK); printf("2-Regras do jogo\n"); textcolor(BRIGHT,BLUE, BLACK); printf("3-Teclas do jogo\n"); textcolor(BRIGHT,BLUE, BLACK); printf("p-Sair do jogo\n"); textcolor(BRIGHT,GREEN, BLACK); printf("\nSeleciona a tua opção e carrega ENTER:"); scanf("%c",&resposta); return resposta; } int main() { int l; do { switch(menu()) { case '1': preencher(); colocar_num(); /*switch(colocar_num()) { case 'o': system("clear"); l=10; break; }*/ break; case '2': ajuda(); l=10; break; case '3': teclas(); l=10; break; case 'p': fechar(); break; } } while(l==10); return 0; }
  2. Obrigado pela ajuda.Se quieser o jogo Sudoku em C, em principio no proximo fim de semana esta completo eu envio-lhe. Abraços Mais uma vez obrigado por tudo e a todos que me responderam no forum.
  3. tentei juntar o meu código do "menu do Sudoku"ao seu que me deu quando utilizo o "p=sair" .Mas esta a ver um problema, existe dois main e se tiro o primeiro o outro na funciona, o que me pode dizer . existe o int main() da linha 28 e o int main na linha 37 que esta no case('p') .O que faço para correr os dois? Aqui esta o código, em principio é só os int main(). # include <stdio.h> # include <stdlib.h> #define RESET 0 #define BRIGHT 1 #define DIM 2 #define UNDERLINE 3 #define BLINK 4 #define REVERSE 7 #define HIDDEN 8 #define BLACK 0 #define RED 1 #define GREEN 2 #define YELLOW 3 #define BLUE 4 #define MAGENTA 5 #define CYAN 6 #define WHITE 7 void textcolor(int attr, int fg, int bg) { char command[13]; /* Command is the control command to the terminal */ sprintf(command, "%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40); printf("%s", command); } int main()//?? { char resposta; system("clear"); textcolor(BRIGHT,WHITE, BLACK); printf("\n\n********* Menu *********\n"); textcolor(BRIGHT,WHITE, BLACK); printf("\n JOGO DO SUDOKU \n"); textcolor(BRIGHT,BLUE, BLACK); printf("\n\n1-Novo Jogo\n"); textcolor(BRIGHT,BLUE, BLACK); printf("2-Regras do jogo\n"); textcolor(BRIGHT,BLUE, BLACK); printf("3-Teclas do jogo\n"); textcolor(BRIGHT,BLUE, BLACK); printf("p-Sair do jogo\n"); textcolor(BRIGHT,GREEN, BLACK); printf("\nSeleciona a tua opção e carrega ENTER:\n"); scanf("%c",&resposta); switch(resposta) { case ('1'): (resposta == '1'); system("clear"); textcolor(BRIGHT,WHITE, BLACK); printf("\n\n\n\nNíveis de dificuldade:\n"); textcolor(BRIGHT,BLUE, BLACK); printf("\n1 - Fácil\n2 - Normal (Médio)\n3 - Dificil\n"); textcolor(BRIGHT,GREEN, BLACK); printf("\nQual a dificuldade que pretende?\n\n"); scanf("%c",&resposta); break; case ('2'): (resposta == '2'); system("clear"); textcolor(BRIGHT,WHITE, BLACK); printf("\n\n\n\nAS REGRAS DO JOGO\n\n"); textcolor(BRIGHT,BLUE, BLACK); printf("\nSudoku é um jogo de raciocínio e lógica. Apesar de ser bastante simples, é divertido e viciante. Basta completar cada linha, coluna e quadrado 3x3 com números de 1 a 9. Não há nenhum tipo de matemática envolvida.\n\n"); //RETORNA break; case ('3'): (resposta == '3'); system("clear"); textcolor(BRIGHT,WHITE, BLACK); printf("\n\n\n\nTeclas do jogo\n"); textcolor(BRIGHT,BLUE, BLACK); printf("\na=Mover para a esquerda\nd=Mover para a direita\ns=Mover para baixo\nw=Mover para cima\np=Sair do jogo\n\n"); break; case('p'): (resposta == 'p'); void fechar () { char retorno[20], comando[30]; FILE *p = popen("ps | grep 'bash' | awk '{print $1}'", "r"); fgets(retorno, 18,p); pclose(p); sprintf(comando, "kill -9 %s", retorno); system(comando); } int main() //?? { char c; c = getchar(); if (c == 'p') { fechar(); } return 0; } //break; } return 0; } tente compilar no comandos do linux e tente ver qual é o problema.
  4. então o p tem haver com o que? com o p=sair?? agora quanto as minhas dúvidas..podia me explciarme?
  5. Ah então é assim, eu não percebi esta parte: FILE *p = popen("ps | grep 'bash' | awk '{print $1}'", "r"); //na internet aparece de maneira diferente e não consigo! fgets(retorno, 18, p); // 18?? e o p??o p não foi declarado, porque esta aqui?para que serve? e também esta parte porque pos estes valores entre as [ ]:char retorno[20], comando[30]; não podia por outros? então axa que fica assim,com a tecla p: # include <stdio.h> int main () { char p; char retorno[20], comando[30]; FILE *p = popen("ps | grep 'bash' | awk '{print $1}'", "r"); printf("p=sair\n"); fgets(retorno, 18, p); pclose(p); sprintf(comando, "kill -9 %s", retorno); system(comando); return 0; }
  6. Obrigado pela ajuda.podia explicarme a sua função que fez??, é que certas coisas não percebo... e se eu quiseres com a tecla p ,resultará?como faço ?
  7. Já tentei essas ipoteses e não deu..está certo que eu pensei assim também no system("exit"), pois na linha de comandos do linux se ponho exit ela fecha, eu axo que no linux esta função do system("exit") não dá. A que resulta mas não faz o que desejo é o system("clear") , mas este apaga tudo o que tava no ecra, mas não fecha a janela.Quanto ao exit(0) tb não fecha a janela.. obrigado pela a ajuda á mesma
  8. Como é que axo para descobrir o PID (ID do processo) de um programa em c??
  9. Aqui está o meu código, ajude me a fechar a linha de comandos com a tecla p.não consigo... #include <stdio.h> #include <stdlib.h> int main () { char t; do { t='0'; //t=getchar; scanf("%c", &t); if ((t=='p') || (t=='P')) { system("clear");//executa bem, o system("sair") já não, nem exit(1).. //system("sair"); // não dá?porque?? } } while(1); }
  10. duarte_valente

    szInput ?

    obrigado..mais uma dúvida. Preciso para o meu jogo Sudoku, uma função time que conte o tempo e carrego numa tecla e pára, no final aparece por baixo o tempo que foi contado ate aquele momento!! Começa a contar o tempo no preciso momento que aparece o tabuleiro..è tipo um cronométro.. Podia dar um dica com é que faxo??
  11. duarte_valente

    szInput ?

    alguém me sabe dizer para que serve isso, e quando é que uso??? : char szInput [256]; gets (szInput);
  12. não estou conseguindo.. aqui está como fiz, o que tenho mal?? #include <stdio.h> int main() { int p; printf("p=sair\n"); scanf("%d",&p); exit(p); return (0); }
  13. não consegui encontrar funções assim mais simples na internet ... estou me a consfundir um bocado quais são as outras funções existentes?
  14. Colegas,preciso de uma função no qual e coloco-o no programa (jogo Sudoku) e que depois de executar o programa carrego numa tecla e fecha a janela desse programa. Soponhamos que uso a tecla 'p'. eu chego a esta parte e depois não sei a funçao que uso para fechar a janela que esta aberta(janela da linha de comandos!!!) Ajudem-me # include <stdio.h> void botao(int sair) { int p; p=sair; } int atalhos { int p; printf("p=sair\n"); scanf("%d",&p) ....??
×
×
  • Criar Novo...