My program runs fine currently, except for the part where it should be displaying the gradually hanging man.
#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;
}
I think the logic for this else is what's wrong, but I don't know how to fix it.
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 anyone can help me, I'd greatly appreciate it!