В настоящее время моя программа отлично работает, за исключением той части, где должно отображаться постепенно висящий человек.Фиксация логической ошибки для игры в палату в c
#include <stdio.h>
#include <string.h>
#define SIZE 30
void game(char w[], char g[], int len);
void hangman(int m);
main() {
char word[SIZE] = "vocal";
int len1 = 0, i;
char guessed[SIZE];
len1 = strlen(word);
guessed[len1];
for(i = 0; i < len1; i++)
guessed[i] = '*';
guessed[len1] = '\0';
printf("%s\n", guessed);
game(word, guessed, len1);
}
void game(char w[], char g[], int len) {
char buffer[100];
char letter = '\0';
int j;
int misses = 0, hits = 0;
while(g != w && misses != 8)
{
printf("Enter a guess: ");
fgets(buffer, 100, stdin);
sscanf(buffer, "%c", &letter);
for(j = 0; j < len; j++)
{
if(letter == w[j])
{
g[j] = letter;
hits++;
printf("%s\n", g);
if(hits == len) {
printf("Congrats, you won!\n");
misses = 8;
}
Я думаю, что логика этого еще не в том, что не так, но я не знаю, как это исправить.
else
{
if(j == len && letter != w[j])
{
misses++;
hangman(misses);
}
}
}
}
}
}
void hangman(int m) {
switch(m) {
case 1:
{
printf(" ----------\n");
printf(" |/ |\n");
printf(" | (_)\n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf("____|____\n");
break;
}
case 2:
{
printf(" ----------\n");
printf(" |/ |\n");
printf(" | (_)\n");
printf(" | |\n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf("____|____\n");
break;
}
case 3:
{
printf(" ----------\n");
printf(" |/ |\n");
printf(" | (_)\n");
printf(" | \\|\n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf("____|____\n");
break;
}
case 4:
{
printf(" ----------\n");
printf(" |/ |\n");
printf(" | (_)\n");
printf(" | \\|/\n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf("____|____\n");
break;
}
case 5:
{
printf(" ----------\n");
printf(" |/ |\n");
printf(" | (_)\n");
printf(" | \\|/\n");
printf(" | |\n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf("____|____\n");
break;
}
case 6:
{
printf(" ----------\n");
printf(" |/ |\n");
printf(" | (_)\n");
printf(" | \\|/\n");
printf(" | |\n");
printf(" | /\n");
printf(" |\n");
printf(" |\n");
printf("____|____\n");
break;
}
case 7:
{
printf(" ----------\n");
printf(" |/ |\n");
printf(" | (_)\n");
printf(" | \\|/\n");
printf(" | |\n");
printf(" | /\\ \n");
printf(" |\n");
printf(" |\n");
printf("____|____\n");
break;
}
case 8:
{
printf(" ----------\n");
printf(" |/ |\n");
printf(" | (_)\n");
printf(" | \\|/\n");
printf(" | |\n");
printf(" | /\\ \n");
printf(" |\n");
printf(" |\n");
printf("____|____\n");
printf("You lost.");
break;
}
}
}
Если кто-нибудь может мне помочь, я был бы очень признателен!
Ну, отступ указывает, что он, вероятно, ошибочен, но вам нужно будет добавить больше кода из самой первой части условных чисел, то есть первая 'if' до последней закрывающей скобки – Madivad
Я бы не стал скажем, что он «отлично работает». Все, что он делает, - это побудить меня больше догадок. –
@Madivad Это все утверждения if. Это все код – cluless1