Ir ao conteúdo
  • Cadastre-se

Daniel13

Membro Júnior
  • Posts

    9
  • Cadastrado em

  • Última visita

Tudo que Daniel13 postou

  1. Jogo da velha com três modos de jogo(player vs player, player vs "IA" simples e player vs "IA" complexa), programado em C, no linux. Pode servir pra alguns de vocês aprenderem alguns conceitos de programação em C e pra quem quiser brincar um pouco. Segue abaixo o código: #include <stdio.h> #include <stdlib.h> #include <time.h> #include <unistd.h> //gera o tabuleiro do jogo e define o tempo do turno da máquina char velha [3][3]; int t=500000; int mlinha, mcoluna; //atualiza o tabuleiro do jogo void tabuleiro() { printf("\n\n %c | %c | %c ", velha[0][0], velha[0][1], velha[0][2]); printf("\n---+---+---"); printf("\n %c | %c | %c ", velha[1][0], velha[1][1], velha[1][2]); printf("\n---+---+---"); printf("\n %c | %c | %c \n", velha[2][0], velha[2][1], velha[2][2]); } //limpa o tabuleiro quando termina o jogo void limpatabuleiro() { int i, j; for (i=0; i<3; i++) for (j=0; j<3; j++) velha[i][j] = ' '; } //imprime jogo da velha na tela void jogo() { printf("\n\nJOGO DA VELHA"); printf("\n==============="); } //imprime a animação da jogada da maquina void machine () { printf("\nVez da Maquina: . "); usleep(t); system("clear"); jogo(); tabuleiro(); printf("\nVez da Maquina: .. "); usleep(t); system("clear"); jogo(); tabuleiro(); printf("\nVez da Maquina: ... "); usleep(t); system("clear"); jogo(); tabuleiro(); } //checa se alguém ganhou int win(int x, int y) { int c=0; if(velha[x-1][y-1]!=' ') { if(velha[x-1][0]==velha[x-1][1] && velha[x-1][0]==velha[x-1][2]) c++; else if(velha[0][y-1]==velha[1][y-1] && velha[0][y-1]==velha[2][y-1]) c++; else if(x==y) { if(velha[0][0]==velha[1][1] && velha[0][0]==velha[2][2]) c++; else if(((x-1)+(y-1))==2) if(velha[0][2]==velha[1][1] && velha[0][2]==velha[2][0]) c++; } else if(((x-1)+(y-1))==2) if(velha[0][2]==velha[1][1] && velha[0][2]==velha[2][0]) c++; } return (c); } //checa se deu velha int dvelha() { int i, j, reset; for(i=0; i<3; i++) for(j=0; j<3; j++) if (velha[i][j]=='O' || velha[i][j]=='X') reset++; if(reset==9) printf("\nDeu velha"); return (reset); } //gera a jogada da maquina (modo simples) até achar um espaço vazio void turnmachine() { int i; for(i=0; ; i++) { srand(time(NULL)); mlinha = 1 + rand() % 3; usleep(t); srand(time(NULL)); mcoluna = 1 + rand() % 3; if(velha[mlinha-1][mcoluna-1]!='O' && velha[mlinha-1][mcoluna-1]!='X') { velha[mlinha-1][mcoluna-1] = 'X'; break; } } } //gera o game int game (int x) { int coluna1 ,linha1, linha2, coluna2 , cond, retorno, reset, i, j, p1, p2, pm; char jogador1 = 'O', jogador2 = 'X'; //fecha o programa if(x==0) { cond=0; return(cond); } //inicia o programa system("clear"); jogo(); limpatabuleiro(); tabuleiro(); while(1) { //gera a jogada do primeiro jogador while(1) { printf("\nJogador 1(Linha e coluna): "); scanf("%d%d", &linha1, &coluna1); if(velha[linha1-1][coluna1-1]==' ') { velha[linha1-1][coluna1-1]='O'; break; } else printf("\nMovimento inválido.\n"); } system("clear"); jogo(); tabuleiro(); //checa se o jogador 1 ganhou p1 = win(linha1, coluna1); if(p1) { printf("\nJogador 1 ganhou.\n"); break; } //dar velha reset = dvelha(); if(reset==9) break; //gera a jogada pro jogador 2 se o modo for escolhido if(x==1) { //jogada do jogador 2 while(1) { printf("\nJogador 2(Linha e coluna): "); scanf("%d%d", &linha2, &coluna2); if(velha[linha2-1][coluna2-1]==' ') { velha[linha2-1][coluna2-1]='X'; break; } else printf("\nMovimento inválido.\n"); } system("clear"); jogo(); tabuleiro(); //condições para o jogador 2 ganhar p2 = win(linha2, coluna2); if(p2) { printf("\nJogador 2 ganhou.\n"); break; } //dar velha reset = dvelha(); if(reset==9) break; } //gera a jogada da maquina simples se o modo for escolhido else if(x==2) { //imprime a animação de turno da máquina machine(); //gera a jogada da maquina turnmachine(); system("clear"); jogo(); tabuleiro(); //checa se a máquina ganhou pm = win(mlinha, mcoluna); if(pm) { printf("\nMáquina ganhou.\n"); break; } //checa se deu velha reset = dvelha(); if(reset==9) break; } //gera a jogada da maquina complexa caso o modo for escolhido else if(x==3) { //imprime a animação de turno da máquina machine(); //defesa da máquina nas linhas if(velha[0][0]=='O' || velha[0][1]=='O' || velha[0][2]=='O' || velha[1][0]=='O' || velha[1][1]=='O' || velha[1][2]=='O' || velha[2][0]=='O' || velha[2][1]=='O' || velha[2][2]=='O') { if(velha[0][0]==velha[0][1] && velha[0][2]==' ') { velha[0][2]='X'; mlinha=1; mcoluna=3; } else if(velha[0][0]==velha[0][2] && velha[0][1]==' ') { velha[0][1]='X'; mlinha=1; mcoluna=2; } else if(velha[0][0]==velha[1][0] && velha[2][0]==' ') { velha[2][0]='X'; mlinha=3; mcoluna=1; } else if(velha[0][0]==velha[2][0] && velha[1][0]==' ') { velha[1][0]='X'; mlinha=2; mcoluna=1; } else if(velha[0][0]==velha[1][1] && velha[2][2]==' ') { velha[2][2]='X'; mlinha=3; mcoluna=3; } else if(velha[0][0]==velha[2][2] && velha[1][1]==' ') { velha[1][1]='X'; mlinha=2; mcoluna=2; } else if(velha[0][1]==velha[0][2] && velha[0][0]==' ') { velha[0][0]='X'; mlinha=1; mcoluna=1; } else if(velha[1][0]==velha[2][0] && velha[0][0]==' ') { velha[0][0]='X'; mlinha=1; mcoluna=1; } else if(velha[1][1]==velha[2][2] && velha[0][0]==' ') { velha[0][0]='X'; mlinha=1; mcoluna=1; } else if(velha[1][0]==velha[1][1] && velha[1][2]==' ') { velha[1][2]='X'; mlinha=2; mcoluna=3; } else if(velha[1][0]==velha[1][2] && velha[1][1]==' ') { velha[1][1]='X'; mlinha=2; mcoluna=2; } else if(velha[1][1]==velha[1][2] && velha[1][0]==' ') { velha[1][0]='X'; mlinha=2; mcoluna=1; } else if(velha[2][0]==velha[2][1] && velha[2][2]==' ') { velha[2][2]='X'; mlinha=3; mcoluna=3; } else if(velha[2][0]==velha[2][2] && velha[2][1]==' ') { velha[2][1]='X'; mlinha=3; mcoluna=2; } else if(velha[2][1]==velha[2][2] && velha[2][0]==' ') { velha[2][0]='X'; mlinha=3; mcoluna=1; } else if(velha[2][0]==velha[1][1] && velha[0][2]==' ') { velha[0][2]='X'; mlinha=1; mcoluna=2; } else if(velha[2][0]==velha[0][2] && velha[1][1]==' ') { velha[1][1]='X'; mlinha=2; mcoluna=2; } else if(velha[1][1]==velha[0][2] && velha[2][0]==' ') { velha[2][0]='X'; mlinha=3; mcoluna=1; } else if(velha[0][1]==velha[1][1] && velha[2][1]==' ') { velha[2][1]='X'; mlinha=3; mcoluna=2; } else if(velha[0][1]==velha[2][1] && velha[1][1]==' ') { velha[1][1]='X'; mlinha=2; mcoluna=2; } else if(velha[1][1]==velha[2][1] && velha[0][1]==' ') { velha[2][1]='X'; mlinha=3; mcoluna=2; } else if(velha[0][2]==velha[1][2] && velha[2][2]==' ') { velha[2][2]='X'; mlinha=3; mcoluna=3; } else if(velha[0][2]==velha[2][2] && velha[1][2]==' ') { velha[1][2]='X'; mlinha=2; mcoluna=3; } else if(velha[1][2]==velha[2][2] && velha[0][2]==' ') { velha[0][2]='X'; mlinha=1; mcoluna=3; } } //gera o ataque nas linhas else if(velha[0][0]=='X' || velha[0][1]=='X' || velha[0][2]=='X' || velha[1][0]=='X' || velha[1][1]=='X' || velha[1][2]=='X' || velha[2][0]=='X' || velha[2][1]=='X' || velha[2][2]=='X') { if(velha[0][0]==velha[0][1] && velha[0][2]==' ') { velha[0][2]='X'; mlinha=1; mcoluna=3; } else if(velha[0][0]==velha[0][2] && velha[0][1]==' ') { velha[0][1]='X'; mlinha=1; mcoluna=2; } else if(velha[0][0]==velha[1][0] && velha[2][0]==' ') { velha[2][0]='X'; mlinha=3; mcoluna=1; } else if(velha[0][0]==velha[2][0] && velha[1][0]==' ') { velha[1][0]='X'; mlinha=2; mcoluna=1; } else if(velha[0][0]==velha[1][1] && velha[2][2]==' ') { velha[2][2]='X'; mlinha=3; mcoluna=3; } else if(velha[0][0]==velha[2][2] && velha[1][1]==' ') { velha[1][1]='X'; mlinha=2; mcoluna=2; } else if(velha[0][1]==velha[0][2] && velha[0][0]==' ') { velha[0][0]='X'; mlinha=1; mcoluna=1; } else if(velha[1][0]==velha[2][0] && velha[0][0]==' ') { velha[0][0]='X'; mlinha=1; mcoluna=1; } else if(velha[1][1]==velha[2][2] && velha[0][0]==' ') { velha[0][0]='X'; mlinha=1; mcoluna=1; } else if(velha[1][0]==velha[1][1] && velha[1][2]==' ') { velha[1][2]='X'; mlinha=2; mcoluna=3; } else if(velha[1][0]==velha[1][2] && velha[1][1]==' ') { velha[1][1]='X'; mlinha=2; mcoluna=2; } else if(velha[1][1]==velha[1][2] && velha[1][0]==' ') { velha[1][0]='X'; mlinha=2; mcoluna=1; } else if(velha[2][0]==velha[2][1] && velha[2][2]==' ') { velha[2][2]='X'; mlinha=3; mcoluna=3; } else if(velha[2][0]==velha[2][2] && velha[2][1]==' ') { velha[2][1]='X'; mlinha=3; mcoluna=2; } else if(velha[2][1]==velha[2][2] && velha[2][0]==' ') { velha[2][0]='X'; mlinha=3; mcoluna=1; } else if(velha[2][0]==velha[1][1] && velha[0][2]==' ') { velha[0][2]='X'; mlinha=1; mcoluna=2; } else if(velha[2][0]==velha[0][2] && velha[1][1]==' ') { velha[1][1]='X'; mlinha=2; mcoluna=2; } else if(velha[1][1]==velha[0][2] && velha[2][0]==' ') { velha[2][0]='X'; mlinha=3; mcoluna=1; } else if(velha[0][1]==velha[1][1] && velha[2][1]==' ') { velha[2][1]='X'; mlinha=3; mcoluna=2; } else if(velha[0][1]==velha[2][1] && velha[1][1]==' ') { velha[1][1]='X'; mlinha=2; mcoluna=2; } else if(velha[1][1]==velha[2][1] && velha[0][1]==' ') { velha[2][1]='X'; mlinha=3; mcoluna=2; } else if(velha[0][2]==velha[1][2] && velha[2][2]==' ') { velha[2][2]='X'; mlinha=3; mcoluna=3; } else if(velha[0][2]==velha[2][2] && velha[1][2]==' ') { velha[1][2]='X'; mlinha=2; mcoluna=3; } else if(velha[1][2]==velha[2][2] && velha[0][2]==' ') { velha[0][2]='X'; mlinha=1; mcoluna=3; } } else turnmachine(); system("clear"); jogo(); tabuleiro(); //checa se a máquina ganhou pm = win(mlinha, mcoluna); if(pm) { printf("\nMáquina ganhou.\n"); break; } //checa se deu velha reset = dvelha(); if(reset==9) break; } } //checa se o jogador quer continuar jogando printf("\nQuer continuar jogando (1 para sim e 0 para não)? "); scanf("%d", &retorno); if(retorno==1) cond = 1; else cond = 0; return (cond); } //menu inicial do game void main () { int modo, cond=1; char inserir; while (cond) { system("clear"); printf("=========================================\nINSTRUÇÕES\nPara jogar basta inserir o número da linha desejada, apertar 'space' (dar espaço) e inserir o número da coluna desejada. Exemplo: 2 2 -> esse comando irá jogar no quadrado do meio (segunda linha e segunda coluna).\n=========================================\n"); printf("MODOS DE JOGO\t\tCODIGO\nDOIS PLAYERS\t\t 1\nPLAYER VS IA (SIMPLES)\t 2\nPLAYER VS IA (COMPLEXA) 3\n=========================================\n"); printf("Insira o código que deseja (0 para sair): "); scanf("%d", &modo); cond = game(modo); } } Qualquer dúvida podem perguntar, vou tentar responder ao máximo. Desconsiderem qualquer eventual excesso de coisas no código.
  2. Compila e funciona sim, foi programado no linux. Todas as funções estão corretas. Só postei pra quem quiser usar, ou ver um exemplo de como fazer. Mas obrigado pela reposta.
  3. #include <stdio.h> int primo (int x) { int i, c=0; for (i=x; i>0; i--) { if (!(x%i)) c++; } return c; } void main () { int num, cont; printf("Insira um número inteiro: "); scanf("%d", &num); cont = primo(num); if(cont<=2) printf ("É primo.\n"); else printf ("Não é primo. \n"); }
  4. Programa pra mostrar os números da sequência de Fibonacci. #include <stdio.h> void main () { int num, i; float n1=1, n2=0, n=1; printf ("Insira um número inteiro: "); scanf ("%d", &num); if (num==1) printf ("%.0f, ", n2); else if(num==2) printf ("%.0f, %.0f, ", n2, n1); else { if (num==0) printf ("Vai estudar..."); else { printf ("0, 1, "); for (i=2; i<num; i++) { n = n1+n2; printf ("%.0f, ", n); n2 = n1; n1 = n; } } } printf("\n"); }
  5. Programa para calcular fatorial de números. #include <stdio.h> int fatorial (int x) { int fat; for (fat = 1; x>0; x--) { fat = fat*x; } return (fat); } void main () { int num, fat; while(1) { printf("Insira um número inteiro (0 para sair): "); scanf("%d", &num); if(num==0) break; fat = fatorial(num); printf("O fatorial é: %d\n", fat); } }
  6. Dado feito em linguagem C. #include <stdio.h> #include <stdlib.h> #include <time.h> void main () { int dado; char x[2]; while(1) { __fpurge(stdin); gets(x); srand(time(NULL)); dado = 1 + (rand() % 6); printf("\nDado: %d", dado); if(x[0] != 0) return; } }
  7. Programa pra escrever palavras ao contrário. #include <stdio.h> void main () { int tam, i; char pala1[100], pala2[100]; printf("Insira alguma coisa: "); __fpurge(stdin); gets(pala1); for(tam=0; pala1[tam]!=0; tam++); int j=tam; for (i=0; i<tam; i++) { pala2[j-1] = pala1[i]; j--; } pala2[tam]=0; printf("A palavra é %s e ela ao contrário é %s.\n", pala1, pala2); }
  8. Código de organização de livros de uma biblioteca, bem simples, era só pra treinar alguns conceitos. #include <stdio.h> #include <stdlib.h> #include <time.h> #include <unistd.h> #include <string.h> #define qtd 2 //define a estrutura typedef struct Bibli { float cod; char titulo[25], autor[25], editora[25], nome[25]; int ano; }biblio; //define a quantidade de livros (váriavel global) biblio livros[qtd]; //função pra "limpar" o espaço do livro void limpa() { int i; for (i=0; i<qtd; i++) { livros[i].titulo[0]=' '; livros[i].autor[0]=' '; livros[i].editora[0]=' '; livros[i].cod=0; livros[i].ano=0; livros[i].nome[0]=0; } } //função pra incluir livros biblio inclui() { biblio livro; printf("\nInsira o código do livro: "); scanf("%f", &livro.cod); printf("Insira o título do livro: "); __fpurge(stdin); gets(livro.titulo); printf("Insira o autor do livro: "); __fpurge(stdin); gets(livro.autor); printf("Insira o editora do livro: "); __fpurge(stdin); gets(livro.editora); printf("Insira o ano de publicação do livro: "); scanf("%d", &livro.ano); return (livro); } //função pra excluir livros void exclui() { float codi; int i; printf("Insira o código do livro que quer excluir: "); scanf("%f", &codi); if(codi==0) printf("Livro não existe.\n"); else for(i=0; i<qtd; i++) if(codi==livros[i].cod) { limpa(); break; } } //função pra consultar livros int consulta() { int opc, i; float codi; char volta; system("clear"); printf("\n=========================================\n"); printf("CONSULTAR\tCÓDIGO\n\n"); printf("UM LIVRO\t1\nTODOS LIVROS\t2\n"); printf("=========================================\n"); printf("Insira o código(0 para sair): "); scanf("%d", &opc); if(opc==1) { printf("Insira o código do livro: "); scanf("%f", &codi); for(i=0; i<qtd; i++) { if(codi==livros[i].cod && livros[i].nome[0]==0) { printf("\nO livro é: %s\nO autor é: %s\nA editora é: %s\nO ano de lançamento: %d\nO código: %.1f\nSituação: Disponível\n", livros[i].titulo, livros[i].autor, livros[i].editora, livros[i].ano, livros[i].cod); break; } else if(codi==livros[i].cod) { printf("\nO livro é: %s\nO autor é: %s\nA editora é: %s\nO ano de lançamento: %d\nO código: %.1f\nSituação: Indisponível\n", livros[i].titulo, livros[i].autor, livros[i].editora, livros[i].ano, livros[i].cod); break; } } } else if(opc==2) { printf("\nTodos livros da biblioteca:\n"); for(i=0; i<qtd; i++) { if(livros[i].cod!=0 && livros[i].nome[0]==0) printf("\nLivro: %s \t Código: %.1f\nSituação: Disponível\n", livros[i].titulo, livros[i].cod); else if(livros[i].cod!=0) printf("\nLivro: %s \t Código: %.1f\nSituação: Indisponível\n", livros[i].titulo, livros[i].cod); } } printf ("\nQuer retornar a tela principal (s/n)? "); __fpurge(stdin); scanf("%c", &volta); if(volta =='s') return(1); else return(0); } //função pra emprestar livros int empresta() { int i; float codi; char name[25], volta; printf("Escreva seu nome: "); __fpurge(stdin); gets(name); printf("Insira o código do livro que quer pegar emprestado: "); scanf("%f", &codi); if(codi==0) printf("O livro não existe.\n"); else { for(i=0; i<qtd; i++) { if(codi==livros[i].cod && livros[i].nome[0]==0) { strcpy(livros[i].nome, name); printf("\nO livro %s foi emprestado para %s.\n", livros[i].titulo, livros[i].nome); break; } else { printf("Esse livro não está disponível.\n"); break; } } } printf ("\nQuer retornar a tela principal (s/n)? "); __fpurge(stdin); scanf("%c", &volta); if(volta =='s') return(1); else return(0); } //função pra devolver livros int devolve() { int i; float codi; char name[25], volta; printf("Insira o código do livro que quer devolver: "); scanf("%f", &codi); for(i=0; i<qtd; i++) { if(codi==livros[i].cod) { printf("Confirme seu nome para a devolução: "); __fpurge(stdin); gets(name); if(!(strcmp(name, livros[i].nome))) { printf("\nO livro %s foi devolvido com sucesso.\n", livros[i].titulo); livros[i].nome[0]=0; break; } } else printf("O livro não está emprestado."); } printf ("\nQuer retornar a tela principal (s/n)? "); __fpurge(stdin); scanf("%c", &volta); if(volta =='s') return(1); else return(0); } //roda a biblioteca void main() { int opc, keb=3; int i, j=0; limpa(); while(1) { system("clear"); printf("\n=========================================\n"); printf("DESEJA FAZER\tCÓDIGO\n\n"); printf("INCLUSÃO\t1\nEXCLUSÃO\t2\nCONSULTA\t3\nEMPRÉSTIMO\t4\nDEVOLUÇÃO\t5\n"); printf("=========================================\n"); printf("Insira o código(0 para sair): "); scanf("%d", &opc); switch(opc) { case 1: livros[j] = inclui(); j++; break; case 2: exclui(); break; case 3: keb = consulta(); break; case 4: keb = empresta(); break; case 5: keb = devolve(); break; } if(opc==0 || keb==0) break; } } Qualquer dúvida, tentarei responder.
  9. Jogo da forca completo, programado em C. Pode servir pra alguns de vocês aprenderem alguns conceitos de programação em C, no programa eu usei a criação de arquivos, alocação dinâmica de memória e uso de algumas funções. Tentei fazer uma "interface" pra ficar um pouco mais "bonitinho" (dentro dos limites da linguagem). Segue abaixo o código: #include <stdio.h> #include <malloc.h> #include <stdlib.h> #include <time.h> #include <string.h> //adiciona as palavras e a respectiva dica nos arquivos void grava (FILE *arquivodepalavras, FILE *arquivodedicas) { char *inserir, *dica; inserir = (char *)malloc(40*sizeof(char)); dica = (char *)malloc(40*sizeof(char)); *inserir = 1; arquivodepalavras = fopen ("PALAVRAS.txt", "a"); arquivodedicas = fopen ("DICAS.txt", "a"); while(*inserir!=0) { printf("Insira a palavra: "); __fpurge(stdin); gets(inserir); if(*inserir!=0) { printf("Insira a dica da palavra: "); __fpurge(stdin); gets(dica); fprintf(arquivodepalavras, "%s", inserir); fprintf(arquivodepalavras, "\n"); fprintf(arquivodedicas, "%s", dica); fprintf(arquivodedicas, "\n"); } } printf("\n"); fclose(arquivodepalavras); fclose(arquivodedicas); free(inserir); free(dica); } //função que contabiliza o tempo double tempo() { struct timeval tv; gettimeofday(&tv,0); return (tv.tv_sec+tv.tv_usec/1e6); } //gera a palavra aleatória e pega a dica da mesma void palavrasecreta(FILE *arquivodepalavras, char *palavrasecreta, FILE *arquivodedicas, char *dicadapalavra) { char *ler; int *numerorandomico, *tamanho, *i; arquivodepalavras = fopen ("PALAVRAS.txt", "r"); arquivodedicas = fopen ("DICAS.txt", "r"); numerorandomico = (int *)malloc(sizeof(int)); tamanho = (int *)malloc(sizeof(int)); ler = (char *)malloc(sizeof(char)); i = (int *)malloc(sizeof(int)); *tamanho = 0; while((*ler=getc(arquivodepalavras))!=EOF) if(*ler=='\n') (*tamanho)++; rewind(arquivodepalavras); srand(time(NULL)); *numerorandomico = 1+rand()%(*tamanho); for(*i=0; *i<(*numerorandomico); (*i)++) fgets(palavrasecreta, 50, arquivodepalavras); for(*i=0; *i<(*numerorandomico); (*i)++) fgets(dicadapalavra, 50, arquivodedicas); fclose(arquivodepalavras); fclose(arquivodedicas); free(numerorandomico); free(tamanho); free(ler); free(i); } //calcula o tamanho da palavra pra gerar os "traços" no tabuleiro int checatamanho(char *palavrasecreta) { int i; i = strlen(palavrasecreta)-1; return i; } //gera os "traços" no tamanho da palavra escolhida void riscos (char *secret, int *tamanhodapalavra) { int i; for(i=0; i<(*tamanhodapalavra); i++) secret[i] = '_'; } //imprime o tabuleiro do jogo juntamente com a dica void tabuleiro(char *palavrasecreta, int *numeroerros, int *condicaotermino, char *palavramisteriosa, char *dicadapalavra) { system("clear"); system("clear"); switch(*numeroerros) { case 0: printf("__________\n| |\n|\n|\n|\n|\n|\n|\t%s\n\nA dica é: %s", palavrasecreta, dicadapalavra); break; case 1: printf("__________\n| |\n| o\n|\n|\n|\n|\n|\t%s\n\nA dica é: %s", palavrasecreta, dicadapalavra); break; case 2: printf("__________\n| |\n| o\n| |\n|\n|\n|\n|\t%s\n\nA dica é: %s", palavrasecreta, dicadapalavra); break; case 3: printf("__________\n| |\n| o\n| /|\n|\n|\n|\n|\t%s\n\nA dica é: %s", palavrasecreta, dicadapalavra); break; case 4: printf("__________\n| |\n| o\n| /|\\ \n|\n|\n|\n|\t%s\n\nA dica é: %s", palavrasecreta, dicadapalavra); break; case 5: printf("__________\n| |\n| o\n| /|\\ \n| /\n|\n|\n|\t%s\n\nA dica é: %s", palavrasecreta, dicadapalavra); break; case 6: printf("__________\n| |\n| o\n| /|\\ \n| / \\ \n|\n|\n|\t%s\n", palavrasecreta); printf("\n\n==============\nVOCÊ PERDEU!!!\n==============\n\n"); printf("\nA palavra era: %s\n", palavramisteriosa); (*condicaotermino)=0; break; } } //testa se você acertou ou errou void testerro (int *tamanhopalavra, int *erros, char *palavra, char *secreto, char *letra) { int i, certa=77, certa2=0, certa3=0, certa4=0; for(i=0; i<(*tamanhopalavra); i++) if(*letra==palavra[i]) { certa=i; break; } for(i=(certa+1); i<(*tamanhopalavra); i++) if(*letra==palavra[i]) { certa2=i; break; } for(i=(certa2+1); i<(*tamanhopalavra); i++) if(*letra==palavra[i]) { certa3=i; break; } for(i=(certa3+1); i<(*tamanhopalavra); i++) if(*letra==palavra[i]) { certa4=i; break; } if(certa==77 && certa2==0 && certa3==0 && certa4==0) (*erros)++; else { if(certa!=77) secreto[certa] = *letra; if(certa2!=0) secreto[certa2] = *letra; if(certa3!=0) secreto[certa3] = *letra; if(certa4!=0) secreto[certa4] = *letra; } } int vitoria(char *palavra, char *secreto, int *tamanhodapalavra, int *termino) { int i, checagem=0; for(i=0; i<(*tamanhodapalavra); i++) if(secreto[i]==palavra[i]) checagem++; if(checagem==(*tamanhodapalavra)) { system("clear"); system("clear"); printf("\n\n==============\nVOCÊ GANHOU!!!\n==============\n\n"); (*termino)=0; } checagem=0; } void main () { //declarando as variaveis int i, j, t=0; FILE *arquivopalavras, *melhorestempos, *arquivodicas; char *palavra, *segredo, *letra, *dicas; int *opcao, *tamanhopalavra, *numeroerros, *condicaodefim, *condicaodefim2; double tempoinicial,tempofinal,auxiliar, seutempo; melhorestempos = fopen("Tempos.txt", "a"); //reserva espaço na memoria palavra = (char *)malloc(40*sizeof(char)); dicas = (char *)malloc(40*sizeof(char)); opcao = (int *)malloc(sizeof(int)); tamanhopalavra = (int *)malloc(sizeof(int)); segredo = (char *)malloc(40*sizeof(char)); numeroerros = (int *)malloc(sizeof(int)); letra = (char *)malloc(sizeof(char)); condicaodefim = (int *)malloc(sizeof(char)); condicaodefim2 = (int *)malloc(sizeof(char)); *numeroerros = 0; *condicaodefim = 1; *condicaodefim2 = 1; //menu inicial system("clear"); system("clear"); printf("================================================================================\nFAZER\t\t\tCÓDIGO\n\nADICIONAR PALAVRAS\t1\nJOGAR\t\t\t2\n\n================================================================================\n"); printf("O que fazer: "); scanf("%d", opcao); //abre a função que adiciona palavras/dicas if(*opcao==1) grava(arquivopalavras, arquivodicas); //inicia o jogo else if(*opcao==2) { tempoinicial = tempo(); palavrasecreta(arquivopalavras, palavra, arquivodicas, dicas); *tamanhopalavra = checatamanho(palavra); riscos(segredo, tamanhopalavra); while(*condicaodefim==1 && *condicaodefim2==1) { tabuleiro(segredo, numeroerros, condicaodefim, palavra, dicas); printf("\nInsira uma letra: "); __fpurge(stdin); gets(letra); testerro(tamanhopalavra, numeroerros, palavra, segredo, letra); tabuleiro(segredo, numeroerros, condicaodefim, palavra, dicas); vitoria(palavra, segredo, tamanhopalavra, condicaodefim2); } //término do jogo if((*condicaodefim2)==0) { tempofinal = tempo(); seutempo = tempofinal - tempoinicial; fprintf(melhorestempos, "%.3lf segundos\n", seutempo); fclose(melhorestempos); //abre o arquivo e mostra os tempos na tela melhorestempos = fopen("Tempos.txt", "r"); while((*letra=getc(melhorestempos))!=EOF) if(*letra == '\n') t++; double vet[t]; char seg[50]; rewind(melhorestempos); for(i=0; i<t; i++) fscanf(melhorestempos, "%lf%s", &vet[i], seg); for(i=0; i<t; i++) for(j=i; j<t; j++) if(vet[i]>vet[j]) { auxiliar = vet[i]; vet[i] = vet[j]; vet[j] = auxiliar; } fclose(melhorestempos); melhorestempos = fopen("Tempos.txt", "w"); for(i=0; i<t; i++) fprintf(melhorestempos, "%.3lf %s\n", vet[i], seg); fclose(melhorestempos); melhorestempos = fopen("Tempos.txt", "r"); printf("Seu tempo foi: %.3lf segundos\n\n", seutempo); printf("===============\nMELHORES TEMPOS\n\n"); while((*letra=getc(melhorestempos))!=EOF) printf("%c", *letra); printf("===============\n\n"); fclose(melhorestempos); } else fclose(melhorestempos); } free(palavra); free(opcao); free(tamanhopalavra); free(segredo); free(numeroerros); free(letra); free(condicaodefim); free(condicaodefim2); free(dicas); } Qualquer dúvida podem perguntar, vou tentar responder ao máximo. Em breve vou terminar um jogo da velha, pode ser interessante também. Desconsiderem qualquer eventual excesso de coisas no código.

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!