Jogo da forca
Publicado por José Mario Silva Rosa Filho 20/11/2008
[ Hits: 24.117 ]
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; }
Passando parâmetros com getopt
Fazendo o somatório de 1 até N
Validar CPF em C++ (esse funciona)
Atualizar o macOS no Mac - Opencore Legacy Patcher
Crie alias para as tarefas que possuam longas linhas de comando - bash e zsh
Criando um gateway de internet com o Debian
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Instalando Zoom Client no Ubuntu 24.04 LTS
Instalando Zoom Client no Fedora 40
Instalando Navegador Firefox no Debian 12
Bloqueando propagandas no Youtube e outros sites com o uBlocker Origin
Em que pasta/arquivo ficam as configurações das janelas em derivados d... (1)
Dificuldade em ler binário (5)