From aed3ad200d66fc502ab4759ac832cd23e6804029 Mon Sep 17 00:00:00 2001 From: Tomasz Kramkowski Date: Mon, 30 Mar 2015 18:17:14 +0200 Subject: Various fixes to hangman.c. --- hangman.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/hangman.c b/hangman.c index 10373e2..4cf4c16 100644 --- a/hangman.c +++ b/hangman.c @@ -53,32 +53,33 @@ int main(int argc, char **argv) c = toupper(c); if (guessed[c - 'A']) - continue; + goto print_state; if (!in_secret[c - 'A']) { bad_guesses++; - printf("Wrong!"); - continue; + printf("Wrong!\n"); + goto print_state; } guessed[c - 'A'] = true; + for (unsigned i = 0; i < ALPHABET_CHARS; i++) + if (in_secret[i] && !guessed[i]) + goto print_state; + + state = WIN; + + break; +print_state: for (size_t i = 0; i < length; i++) if (isalpha(secret[i]) && !guessed[secret[i] - 'A']) putchar('_'); else putchar(secret[i]); putchar('\n'); + printf("You have %d guesses left.\n", MAX_GUESS - bad_guesses); - for (unsigned i = 0; i < ALPHABET_CHARS; i++) - if (in_secret[i] && !guessed[i]) - goto cont; - - state = WIN; - - break; -cont: - if (bad_guesses > MAX_GUESS) { + if (bad_guesses >= MAX_GUESS) { state = LOSS; break; } -- cgit v1.2.3-54-g00ecf