Jogo da forca
Publicado por José Mario Silva Rosa Filho 20/11/2008
[ Hits: 24.352 ]
Jogo da forca desenvolvido em C, com funções de leitura e gravação.
A leitura é feita de forma RANDOM, e possui 1 exemplo de estrutura;
Obs: Desenvolvido para um trabalho de faculdade;
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #include <time.h> #include <ctype.h> #define PAL 100 FILE *doc; int criou = 0, leu = 0; char palavras[PAL][25]; void cadastrapal(); void creditos(); void lepal(); void manual(); void menu(); void erase(); void jogo(); void erase(){ int x; system("cls"); printf("Gostaria de Apagar o Arquivo Forca.txt e o Arquivo Creditos.txt?\n"); printf("1)Sim apagar os dois!\n"); printf("2)Apagar somente foca.txt!\n"); printf("3)Apagar somente creditos.txt\n"); printf("4)Nao apagar!\n"); scanf("%d",&x); switch(x){ case 1:{ remove("forca.txt"); remove("Creditos.txt"); break; } case 2:{ remove("forca.txt"); break; } case 3:{ remove("Creditos.txt"); break; } case 4: break; default:{ printf("Nao existe essa opcao!\n\n"); break; } } printf("Pressione uma tecla para voltar ao menu!"); getch(); } void jogo(){ system("cls"); int i, gera_rand, erros = 8, tamanho, termina = 0, z = 0; bool joga = 1, errou; char selecionada[25], verifica[1] = {""}, correta[25], digitadas[25] = {""}; char letras[57] = {" a b c d e f g h i j k l m n o p q r s t u v w x y z 0"}; srand(time(NULL)); typedef struct Membros_Do_Carinha{ // Exemplo de Uso de estrutura para formaçao do boneco char cabeca[1]; char tronco[1]; char b_p[1]; char p_b[1]; }P; for(i=0;i<PAL;i++){ if(strcmp(palavras[i],"") == 0 && i == 0){ printf("Erro voce nao cadastrou nenhuma palavra!\n"); printf("E seu forca.txt nao consta nenhuma palavra!\n"); joga = 0; break; } else if(strcmp(palavras[i],"") == 0){ gera_rand = i; break; } } if(joga){ // Onde o jogo começa meu parceroooo!!! gera_rand = rand() % gera_rand; strcpy(selecionada,palavras[gera_rand]); for(i=0;i<25;i++) selecionada[i] = tolower(selecionada[i]); // printf("A palavra seleciona e %s\n",selecionada); tamanho = strlen(selecionada); P ERROS; ERROS.cabeca[1] = 'O'; ERROS.tronco[1] = '|'; ERROS.b_p[1] = '/'; ERROS.p_b[1] = '\\'; for(i = 0;i < tamanho;i++){ if(selecionada[i] == ' ') correta[i] = ' '; else correta[i] = '_'; } for(i = 0;i < tamanho;i++) if(selecionada[i] == ' '){ tamanho++; termina++; } while(erros){ system("cls"); printf("\n"); printf("+--------------------+\n"); printf("| |\n"); printf("| %c\n",erros < 8 ? ERROS.cabeca[1] : ' '); printf("| %c%c%c\n",erros < 6 ? ERROS.b_p[1] : ' ',erros < 7 ? ERROS.tronco[1] : ' ',erros < 5 ? ERROS.p_b[1] : ' '); printf("| %c\n",erros < 4 ? ERROS.tronco[1] : ' '); printf("| %c %c\n",erros < 3 ? ERROS.b_p[1] : ' ',erros < 2 ? ERROS.p_b[1] : ' '); printf("|\n"); printf("|\n"); printf("| "); for(i = 0;i < tamanho;i++){ if(selecionada[i] == verifica[0]){ correta[i] = verifica[0]; termina++; //Faz o controle ' se termina for igual a tamanho entao a palavras esta correta e acaba o jogo... } } for(i = 0;i < tamanho;i++){ // Imprime a palavra na tela printf("%c ",correta[i]); } printf("\n\n"); for(i = 1;letras[i] != '0';i++){ // Coloca - nas letras digitadas if(letras[i] == verifica[0]) letras[i] = '-'; printf("%c",letras[i]); } if(termina == tamanho){ printf("\n\n\n\nAeeeeeeeeeeeeeeee Aeeeeeeeeeeeeeee\n\n"); printf("Uhuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu\n"); printf("Voce Ganhou!!!\n"); break; } if(erros == 1){ printf("\n\n\n\nLoseerrrrrrrr\n\n"); printf("Uuuuuuuuuuuuuuuuuuuuuu\n"); printf("Perdedor!!!\n"); printf("A palavra selecionada era %s\n",selecionada); printf("Ate minha avo sabia!\n"); printf("ALOCOOOOOOO\n\n"); break; } printf("\n\nDigite uma Letra: "); verifica[0] = getch(); for(i=0;digitadas[i] != '{FONTE}';i++){ // Verifica se a letra ja foi digitada if(digitadas[i] == verifica[0]){ printf("\nEssa letra ja foi digitada meu parcero!\n"); printf("Por Gentileza digite outra e tente nao cometer o mesmo erro 2 vezes.\n"); verifica[0] = getch(); if(verifica[0] == digitadas[i]){ // Se caso o cara volte a digitar a mesma letra que a anterior ele diminui 1 em i e manda continuar o FOR verifica[0] = getch(); i--; continue; } break; } } digitadas[z] = verifica[0]; z++; errou = 1; for(i = 0;i < tamanho;i++){ // Verifica se o cara digito uma letra que nao tem na palavra if(selecionada[i] == verifica[0]){ // Se nao tiver letra na palavra incrementa um erro correta[i] = verifica[0]; errou = 0; } } if(errou) erros--; } } getch(); } void manual(){ system("cls"); printf("Este e o manual do jogo da forca por Jos%c Mario Silva Rosa Filho.\n",130); printf(" "); printf("Na segunda opcao do menu criar lista de palavras, ele ira gerar um txt\n"); printf("Chamado \"Forca.txt\" nesse arquivo se concentra um banco de palavras\n"); printf("O qual suportara um maximo de 100 palavras para leitura, entao se por\n"); printf("Ventura o usuario criar mais de 100 palavras elas nao serao utilizadas.\n"); printf("O usuario podera cadastrar 100 palavras sem consultar o banco de palavras.\n"); printf(" "); printf("*Importante: Nao existe a necessidade de colocar 100 palavras para começar\n"); printf("a jogar;"); printf("\n\n\n\n"); printf("Pressione uma tecla para voltar ao menu!"); getch(); } void cadastrapal(){ // FUNCAO PARA CADASTRAR PALAVRAS int i,tamanho; if((doc = fopen("forca.txt","a+")) == NULL){ printf("Erro ao Abrir o Arquivo \"FORCA.txt\"."); exit(0); }; for(i=0;i<PAL;i++){ fflush(stdin); gets(palavras[i]); if(strcmp(palavras[i],"") == 0) break; fwrite(palavras[i],sizeof(palavras[25]),1,doc); } fclose(doc); criou = 1; } void lepal(){ // FUNCAO PARA LER PALAVRAS int i = 0; char nome[] = {"forca.txt"}; if((doc = fopen(nome,"r")) == NULL){ printf("Erro ao Abrir o Arquivo \"FORCA.txt\"."); getch(); exit(0); }; while(!feof(doc)){ fread(palavras[i],sizeof(palavras[25]),1,doc); i++; } fclose(doc); leu = 1; } void menu(){ int x, aceita; system("cls"); do{ system("cls"); printf("Escolha uma das Opcoes para execucao do programa.\n"); printf("+------------------------------------------------------------------------------+"); printf("| Bem Vindo ao Jogo Da Forca |"); printf("| |"); printf("|1)Ler Manual Do Usuario. |"); printf("|2)Criar Lista De Palavras. |"); printf("|3)Apagar Arquivo. |"); printf("|4)>>>>>>>>>>>>>Jogar.<<<<<<<<<<<<<<<< |"); printf("|5)Mostrar Creditos e Encerrar o Programa. |"); printf("| Por: Jos%c Mario Silva Rosa Filho |",130); printf("+------------------------------------------------------------------------------+\n"); scanf("%d",&x); } while(x < 1 || x > 5); switch(x){ case 1:{ manual(); menu(); break; } case 2:{ cadastrapal(); menu(); break; } case 3:{ erase(); menu(); break; } case 4:{ lepal(); if(leu || criou) jogo(); else{ printf("Voce nao criou palavras e seu txt nao possui nenhuma!\n"); printf("Selecione a opcao 2 do menu!\n"); getch(); } menu(); break; } case 5:{ creditos(); break; } } } void creditos(/*int texto*/){ //Nao lembro Motivo pelo qual coloquei esse parãmetro aqui system("cls"); if((doc = fopen("Creditos.txt","w")) == NULL){ printf("Erro ao Abrir o Arquivo \"Creditos.txt\"."); exit(0); }; printf("+-----------------------------------------------------------+\n"); printf("|Programa Desenvolvido Por: |\n"); printf("| Jos%c Mario Silva Rosa Filho |\n",130); printf("|\"Todo homem procura o sentido de sua exist%cncia, mas nem |\n",136); printf("|todos encontram o caminho.\" Jos%c Mario |\n",130); printf("| zemariosrf@hotmail.com |\n"); printf("| 06/06/2008 02:15 |\n"); printf("+-----------------------------------------------------------+\n\n\n"); fprintf(doc,"+-----------------------------------------------------------+\n"); fprintf(doc,"|Programa Desenvolvido Por: |\n"); fprintf(doc,"| Jose Mario Silva Rosa Filho |\n",130); fprintf(doc,"|\"Todo homem procura o sentido de sua existencia, mas nem |\n",136); fprintf(doc,"|todos encontram o caminho.\" Jose Mario |\n",130); fprintf(doc,"| zemariosrf@hotmail.com |\n"); fprintf(doc,"| 06/06/2008 02:15 |\n"); fprintf(doc,"+-----------------------------------------------------------+\n\n\n"); printf("Pressione uma tecla para sair!"); getch(); } int main(){ if((doc = fopen("forca.txt","a+")) == NULL){ printf("Erro ao Abrir o Arquivo \"FORCA.txt\"."); exit(0); }; fclose(doc); menu(); return 0; }
Organizar variáveis em ordem crescente
Binário para Decimal, Hexa, Char
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
VMs e Interfaces de Rede desapareceram (12)
Instalação do drive do adaptador wiffi (7)