Eu estava a refazer o jogo do zero, até que cheguei a uma parte que não estou a intender porque é que não funciona. Eu estava a fazer:
for(int i = 0; i < strlen(palavrasecreta); i++){
int achou = 0;
for(int j = 0; j < tentativas; j++){
if (chutes[j] == palavrasecreta[j]){
achou = 1;
break;
}
}
Porém, o programa, caso acertasse a letra, não me desbloqueava e eu não sei explicar o porquê.
Até que eu fui ver os videos novamente e reparei que o certo é:
for(int j = 0; j < tentativas; j++){
if (chutes[j] == palavrasecreta[i]){
Na prática, se o j= 0 e o i=0, não estamos a falar em posições iguais? Se sim, porque é que não estava a funcionar? (Deixo o código completo abaixo)
#include <stdio.h>
#include <string.h>
void abertura(/*char x[26]*/){
printf("*******************\n");
printf("* Jogo da Forca *\n");
printf("*******************\n");
/*int i = 0;
while(x[i] != '\0'){ serve para ver a palavra
printf("%c", x[i]);
i++;
}
while(x[i] != '\0'){
printf("_ ");
i++;
}
printf("\n");*/
}
void chuta(char chutes[26], int tentativas){
char chute;
scanf(" %c", &chute); //Temos de colocar um 'espaço' para o sistema não assumir o 'enter' como um char
chutes[tentativas] = chute;
}
int main() {
char palavrasecreta[26];
sprintf(palavrasecreta, "MELANCIA");
char chutes[26];
int tentativas = 0;
int acertou = 0;
int enforcou = 0;
abertura();
do {
for(int i = 0; i < strlen(palavrasecreta); i++){
int achou = 0;
for(int j = 0; j < tentativas; j++){
if (chutes[j] == palavrasecreta[j]){
achou = 1;
break;
}
}
if(achou){
printf("%c ", palavrasecreta[i]);
}
else
printf("_ ");
}
printf("\n");
chuta(chutes, tentativas);
tentativas++;
} while (!acertou && !enforcou);
}