Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Jogo da Forca/Jogo da Forca.c #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> #define NUMERO_DE_PALAVRAS 100 int Global=0,count=0; int isLetter(char letra){ //tabela ASCII as letras estao entre 65 e 90(maiúsculas) e 97 e 122(minúsculas) if(!((letra>=65 && letra <=90)||(letra>=97 && letra <= 122))){ printf("\n\t\t\t\t\t\tNao e uma letra!\n"); return 0; } return 1; } int acharLetra(char *palavra, char* rest, char letra,int *a){ //usa recursividade //vai iniciar com null para dizer que nao existe char *resto = rest; if(!rest){ if((resto = strchr(palavra, letra)) == NULL) return 0; //padrão do C, procura a primeira, caso seja null, retorna 0 e aparecerá a cabeça (um erro) else{ a[Global++] = resto - palavra +1; //descobre a posição da letra //armazena no a a posição que a letra está acharLetra(palavra, resto+1,letra,a); // e chama de novo a funcao pra ver se tem outras instancias no resto da palavra } }else{ if((resto = strchr(resto, letra)) == NULL) return 0; //nao vai ter resto, vai procurar na palavra, se tiver resto procura no resto else{ a[Global++] = resto - palavra +1; acharLetra(palavra, resto+1,letra,a); } } return 1; } int atualizar(int* a, char letra,int tamanhoPalavra, char *palavra, int erros, char* tent){ //int a é onde as letras que acertou está system("cls"); switch(erros){ case 1: printf("\n----------\n\t |\n\t O\n\n\n"); printf("\n\t\t\t\t\t\tVoce tem mais 5 chances!\n"); break; case 2: printf("\n----------\n\t |\n\t O\n\t |\n\n"); printf("\n\t\t\t\t\t\tVoce tem mais 4 chances!\n"); break; case 3: printf("\n----------\n\t |\n\t O\n\t/|\n\n"); printf("\n\t\t\t\t\t\tVoce tem mais 3 chances!\n"); break; case 4: printf("\n----------\n\t |\n\t O\n\t/|\\\n\n"); printf("\n\t\t\t\t\t\tVoce tem mais 2 chances!\n"); break; case 5: printf("\n----------\n\t |\n\t O\n\t/|\\\n\t/ \n"); printf("\n\t\t\t\t\t\tVoce tem so 1 chance! \n"); break; case 6: printf("\n----------\n\t |\n\t O\n\t/|\\\n\t/ \\\n"); printf("\n\t\t\t\t\t\tFoi sua ultima chance!\n"); break; default: printf("\n----------\n\t |\n\n\n\n"); break; } int i,j, print=0; //saber onde colocar as letras que acertou for(i=0; i<tamanhoPalavra; ++i){ //o tamanho da palavra vai ser descoberto na função abaixo print = 0; //print vai servir como booleano for(j =0; j<tamanhoPalavra; j++){ if(a[j]-1 == i){ //o primeiro for vai percorrer os traços e o segundo printf(" %c",palavra[i] ); //vai ver se precisa ser substituido por uma letra print = 1; break; } } if(!print){ //se o print for 0, vai imprimir _ senao vai imprimir a letra printf(" _"); } } printf("\n"); //letras que tentei printf("\n\t\t\t\t\t\tTentativas: "); for(i =0; i<count; ++i) printf("%c%c", tent[i], i==count-1?'\0':','); //laço de formatação das tentativas } //numero de tentativas //se for o ultimo caractere eu imprimo nada ao void jogo(){ //inves da virgula while(1){ //loop infinito system("cls"); FILE *arquivos = fopen("palavras.txt", "r"); int i, erros=0; char palavras[NUMERO_DE_PALAVRAS][20]; for (i = 0; i < NUMERO_DE_PALAVRAS ; i++) { fgets(palavras[i], 20, arquivos); } free(arquivos); srand (time(NULL)); int index = rand()%NUMERO_DE_PALAVRAS; char *palavra = palavras[index]; int tamanhoPalavra; for(tamanhoPalavra = 0; tamanhoPalavra<20; tamanhoPalavra++){ //descobrir quantas letras tem a palavra if(palavra[tamanhoPalavra] =='\n'||palavra[tamanhoPalavra] == '\0') break; } int *a = malloc(sizeof(int*)*tamanhoPalavra); //descobriu o tamanho da palavra em cima char *tent = malloc(sizeof(int*)*(tamanhoPalavra+6));//logo em baixo vai ser usado o ciclo ate o tamanho da palavra printf("\n----------\n\t |\n\n\n\n"); for(i=0; i<tamanhoPalavra; ++i) //criar as lacunas printf(" _"); printf("\n"); char letra; while(1){ //loop infinito do{ fflush(stdin); printf("\n\t\t\t\t\t\tDigite uma letra: "); letra = getchar(); int c; while ( (c = getchar()) != '\n' && c != EOF ) { } //limpar o buffer por enquanto nao encontra uma quebra de linha }while(!isLetter(letra)); //ou acabar o file int g; //PADRÃO C99 //count é quantas letras foram encontradas for(g=0;g<count; ++g){ //pra ver se ja usou a letra alguma vez //procura se é uma letra repetida if(tent[g] == letra) break; //ele vai quebrar aqui se achar a primeira letra = tent } if(g == count){//senao, se continuar o loop, o g vai chedgar em count //count conta quantas letras foram encontradas tent[count++] = letra;//nao tem uma letra repetida // e o array armazena onde foi encontrado a letra if(!acharLetra(palavra,NULL,letra,a)){//agora que irá ver se aertou ou nao ++erros; printf("\t\t\t\t\t\tErrou! Tente novamente\n\n"); system("pause"); atualizar(a, letra, tamanhoPalavra, palavra,erros, tent); }else atualizar(a, letra, tamanhoPalavra, palavra,erros,tent); if(erros >=6 ){ atualizar(a, letra, tamanhoPalavra, palavra,erros,tent); printf("\t\t\t\t\t\t\n Voce perdeu!\n"); break; } if(Global>=tamanhoPalavra){ printf("\n\t\t\t\t\t\t Voce ganhou!\n"); break; } } } free(a); free(tent); Global =0; erros = 0; count = 0; return; } } int main(){ printf("\t\t\t\t\t\tBEM VINDO AO JOGO DA FORCA!\n\t\t\t\t\t\t\tversao beta\n\t\t\t\t\t\tEngenharia de Computacao 2015.2\n"); printf("\n\n\n\n\t\t\t\tDesenvolvedores: Tallys Prado, Jose Paulo e Marcio Anderson\n"); system("pause"); while(1){ jogo(); int x; printf("\n\n\t\t\t\t\t\tJogar Novamente? 1- Sim | 2- Nao\n"); scanf("%d", &x); if(x!=1) break; } system("pause"); return 0; } Jogo da Forca/Jogo da Forca.exe Jogo da Forca/Jogo da Forca.o Jogo da Forca/palavras.txt caminhao porta aviao computador celular carro ventilador programacao janela geladeira cadeira vento azul hipopotamo rinoceronte riacho guarda sobral brasil alemanha canada carregador caderno lapis neve chuva facebook whatsapp planeta terra novembro garrafa cachorro gato girafa rinoceronte dinossauro macaco teclado violao bateria violino violoncelo guitarra rosa flor japao equador australia russia acopiara fortaleza itapaje quixada iguatu flauta nirvana oficina comercio empresario engenheiro medico dentista escritor ator autor carnaval natal recife piaui para paracuru aranha etiopia haiti italia franca europa portugal suecia rondonia maceio niteroi russas rato matematica historia geografia ciencias fisica biologia sociologia filosofia informatica quimica computacao artes redacao portugues ingles Jogo da Velha/Jogo da Velha.c #include<stdio.h> #include<stdlib.h> #include <ctype.h> int main(){ char posicao[10] = {' ' ,'1', '2', '3', '4', '5', '6', '7', '8','9'}; // declarado vetor posição para representar o valores de 1 a 9 sendo de tam 10 //char vetor_vazio[9]= {' ',' ',' ',' ',' ',' ',' ',' ',' ' }; // onde a posição 0 é vazia assim cada numero corresponde sua posição no vetor "real" char x[15], o[15]; //para capturar nomes pros jogadores int jogada= 0; // contrala o numero de jogadas e vez dos jogadores int posicao_escolhida; // para capturar uma posição do usuário int resp= 1; int vencedor=0; //capturando o nome dos jogadores printf("DIGITE UM NOME PARA X: "); scanf("%s",&x); printf("DIGITE UM NOME PARA O: "); scanf("%s",&o); system ("cls"); //começando o jogo while (resp==1){ do{ fflush(stdin); system("cls"); if(jogada % 2 == 0) // De acordo com o numero da jogada é determinada a vez se Impar = jogador 1, Par = jogador 2. { printf("\n Jogador 1: %s (X) \n",&x); // X sempre começa } else { printf("\n Jogador 2: %s (O) \n",&o ); } //imprimindo tabuleiro printf ("\n %c | %c | %c ", posicao[1], posicao[2], posicao[3]); printf ("\n---|---|---"); printf ("\n %c | %c | %c ", posicao[4], posicao[5], posicao[6]); printf ("\n---|---|---"); printf ("\n %c | %c | %c \n", posicao[7], posicao[8], posicao[9]); printf ("\nEntre com a posicao da jogada : "); scanf ("%i", &posicao_escolhida); system("cls"); if(posicao_escolhida < 1 || posicao_escolhida > 9 ){ //testa se a posição digitada é válida printf("Posicao invalida, digite um numero entre 1 e 9 de acordo com tabuleiro\n"); system("pause"); system ("cls"); continue; } if(posicao[posicao_escolhida] == 'X' || posicao[posicao_escolhida ]== 'O'){//testa se a posição já foi ocupada printf("posicao ocupada, faca outra escolha\n"); system("pause"); system ("cls"); continue; } //fazendo a jogada aparecer de acordo com o jogador, e o vetor posição é substituido posicao[posicao_escolhida] = 'X'; if(jogada %2 != 0){ posicao[posicao_escolhida] = 'O'; } //testes das possibilidades por jogador if(( posicao[1]=='X' && posicao[2]=='X' && posicao[3]=='X')|| ( posicao[4]=='X' && posicao[5]=='X' && posicao[6]=='X')|| ( posicao[7]=='X' && posicao[8]=='X' && posicao[9]=='X')|| ( posicao[1]=='X' && posicao[4]=='X' && posicao[7]=='X')|| ( posicao[2]=='X' && posicao[5]=='X' && posicao[8]=='X')|| ( posicao[3]=='X' && posicao[6]=='X' && posicao[9]=='X')|| ( posicao[1]=='X' && posicao[5]=='X' && posicao[9]=='X')|| ( posicao[3]=='X' && posicao[5]=='X' && posicao[7]=='X')){ vencedor =1; printf("jogador %s (X), VENCEU \n",&x); break; } if(( posicao[1]=='O' && posicao[2]=='O' && posicao[3]=='O')|| ( posicao[4]=='O' && posicao[5]=='O' && posicao[6]=='O')|| ( posicao[7]=='O' && posicao[8]=='O' && posicao[9]=='O')|| ( posicao[1]=='O' && posicao[4]=='O' && posicao[7]=='O')|| ( posicao[2]=='O' && posicao[5]=='O' && posicao[8]=='O')|| ( posicao[3]=='O' && posicao[6]=='O' && posicao[9]=='O')|| ( posicao[1]=='O' && posicao[5]=='O' && posicao[9]=='O')|| ( posicao[3]=='O' && posicao[5]=='O' && posicao[7]=='O')){ vencedor=2; printf("jogador %s (O), VENCEU \n",&o); break; } jogada++; //system("cls"); if (jogada==9 && vencedor!=1 && vencedor!=2){ printf("DEU VELHA"); break; } }while(vencedor == 0); printf("1.JOGAR NOVAMENTE \n"); printf("2. SAIR \n"); printf("digite uma opcao \n"); scanf("%d",&resp); int x; for(x=1; x<=9; ++x) posicao[x] = '0'+ x; vencedor = 0; jogada =0; } system("pause"); return 0; } Jogo da Velha/Jogo da Velha.exe Jogo da Velha/Jogo da Velha.o
Compartilhar