Skip to content

Instantly share code, notes, and snippets.

@raphahramos
Last active May 13, 2020 17:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save raphahramos/988dccec4837997cddc4a3120dd531ee to your computer and use it in GitHub Desktop.
Save raphahramos/988dccec4837997cddc4a3120dd531ee to your computer and use it in GitHub Desktop.
forca
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <time.h>
#include <string.h>
#include <stdbool.h>
void imprimeMenu();
bool opcaoValida();
void jogo();
int menu();
int menuInstrucoes();
void jogo() {
srand(time(NULL));
char letra;
int volta;
int vida=6;
int contador=0;
char palavra[20][20] = {"fermento", "farofa", "sabonete", "ratazana", "tijolo", "concreto", "lajota", "telhado", "perfume", "sorvete", "holanda", "cerveja", "abacaxi", "janeiro", "picanha", "chapecoense", "feministas", "mulher", "bicicleta"};
char dica[20][50] = {"Dica: usado em padarias", "Dica: tempero de comida", "Dica: usado no banho", "Dica: tem nos esgotos", "Dica: usado para fazer paredes", "Dica: usado em construções", "Dica: tem nas ruas", "Dica: usado para cobrir casas", "Dica: usado para estetica", "Dica: consumido no calor", "Dica: um pais da europa", "Dica: bebida pra esquecer problemas", "Dica: fruta", "Dica: mes do ano", "Dica: corte de carne", "Dica: melhor time do Brasil", "Dica: grupo de pessoas peludas", "Dica: serve pra lavar roupa", "Dica: meio de transporte"};
int i = rand() % 19;
int tamanho_palavra = strlen(palavra[i]);
int achou1=0,achou=0;
char *vetor_p = (char *)calloc(tamanho_palavra, sizeof(char));
for(contador=0; contador<tamanho_palavra; contador++)
vetor_p[contador]='_';
system("cls");
printf("________\n| |\n|\n|\n|\n|\n|\n--\n");
contador=0;
printf("tamanho da palavra: %d letras\n ", tamanho_palavra);
while (contador<=tamanho_palavra) {
contador++;
printf(" _ ");
}
while(vida>0 && achou1 < tamanho_palavra) {
achou=0;
printf("\nDigite uma letra: ");
scanf (" %c", &letra);
for(contador=0; contador<tamanho_palavra; contador++) {
if(palavra[i][contador]==letra) {
achou++;
achou1++;
vetor_p[contador] = letra;
}
}
if(achou) {
system("cls");
switch(vida){
case 6:
system("cls");
printf("________\n| |\n|\n|\n|\n|\n|\n--\n");
break;
case 5:
system("cls");
printf("________\n| |\n| O\n|\n|\n|\n|\n--\n");
break;
case 4:
system("cls");
printf("________\n| |\n| O\n| |\n|\n|\n|\n--\n");
break;
case 3:
system("cls");
printf("________\n| |\n| O\n| -|\n|\n|\n|\n--\n");
break;
case 2:
system("cls");
printf("________\n| |\n| O\n| -|-\n|\n|\n|\n--\n");
break;
case 1:
system("cls");
printf("________\n| |\n| O\n| -|-\n| |\n| /\n|\n--\n");
printf("%s\n",dica[i]);
break;
case 0:
system("cls");
printf("________\n| |\n| O\n| -|-\n| |\n| / \\\n|\n--\n");
break; }
printf("\nParabéns! Você achou a letra %c\n", letra);
for(contador=0; contador<tamanho_palavra; contador++)
printf(" %c ", vetor_p[contador]);
}
else {
vida--;
switch(vida){
case 6:
system("cls");
printf("________\n| |\n|\n|\n|\n|\n|\n--\n");
break;
case 5:
system("cls");
printf("________\n| |\n| O\n|\n|\n|\n|\n--\n");
break;
case 4:
system("cls");
printf("________\n| |\n| O\n| |\n|\n|\n|\n--\n");
break;
case 3:
system("cls");
printf("________\n| |\n| O\n| -|\n|\n|\n|\n--\n");
break;
case 2:
system("cls");
printf("________\n| |\n| O\n| -|-\n|\n|\n|\n--\n");
break;
case 1:
system("cls");
printf("________\n| |\n| O\n| -|-\n| |\n| /\n|\n--\n");
printf("%s\n",dica[i]);
break;
case 0:
system("cls");
printf("________\n| |\n| O\n| -|-\n| |\n| / \\\n|\n--\n");
break; }
printf("\nEita! Você não encontrou a letra %c, você tem %d de vida", letra, vida);
if(vida==1)
printf(" \n");
else
printf("s \n");
for(contador=0; contador<tamanho_palavra; contador++)
printf(" %c ", vetor_p[contador]);
}
}
if(achou1==tamanho_palavra){
printf("\n\nParabéns, você encontrou a palavra %s\n\n", palavra[i]);
}else
printf("\n\nDerrota, você não encontrou a palavra %s\n\n", palavra[i]);
printf("\nSe quiser jogar novamente, digite 1\nPara voltar ao menu, digite 2\n");
scanf("%d",&volta);
switch(volta){
case 1:
jogo();
break;
case 2:
system("cls");
menu();
break;
}
}
void imprimeMenu(){
printf("------------Bem vindo ao jogo da forca.------------\n");
printf("Digite 1 para começar a jogar.\nDigite 2 para instruções de jogo.\nDigite outro numero para sair do jogo\n");
}
bool opcaoValida(int option){
if(option > 0 && option < 3){
return true;
}
return false;
}
int menuInstrucoes(){
int opcao;
system("cls");
printf("*O objetivo do jogo é você descobrir qual a palavra oculta.\n*Você escolhe uma letra por rodada.\n");
printf("*Caso a palavra possua a letra digitada será mostrada em sua posição.\n*Se a letra estiver errada será desenhada uma parte do corpo do boneco.\n*Se todas as 6 partes do boneco estiverem desenhadas você perde o jogo.\n");
printf("\nDigite 1 para começar a jogar.\n");
printf("\nDigite 2 para voltar ao menu principal.\n");
scanf("%d",&opcao);
return opcao;
}
int menu(){
int option = 1;
while(opcaoValida(option)){
imprimeMenu();
scanf("%d",&option);
switch(option){
case 1:
system("cls");
jogo();
return 0;
case 2:
Cleanup: ;
int opcao = menuInstrucoes();
if(opcao == 1){
jogo();
return 0;
}else if(opcao == 2){
system("cls");
break;
}else{
menuInstrucoes();
}
}
}
}
int main(){
setlocale(LC_ALL,"Portuguese");
menu();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment