Jogo da forca
Publicado por José Mario Silva Rosa Filho 20/11/2008
[ Hits: 24.301 ]
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
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)