-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHangman_Game.cpp
89 lines (80 loc) · 2.41 KB
/
Hangman_Game.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
const int MAX_TRIES=5;
int Letter_Fill (char, string, string&);
int main (){
char letter;
int num_of_wrong_guesses=0;
string name,word,words[] {
"india",
"pakistan",
"nepal",
"malaysia",
"philippines",
"australia",
"iran",
"ethiopia",
"oman",
"indonesia",
"gambia",
"georgia"
};
//choose and copy a word from array of words randomly
srand(time(NULL));
int n=rand()% 12;
word=words[n];
// Initialize the secret word with the * character.
string unknown(word.length(),'*');
// welcome the user
cout << "\n\nWelcome to hangman...Guess a country Name"
<< "\n\nEach letter is represented by a star."
<< "\n\nYou have to type only one letter in one try"
<< "\n\nYou have " << MAX_TRIES << " tries to try and guess the word."
<< "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
// Loop until the guesses are used up
while (num_of_wrong_guesses < MAX_TRIES){
cout << "\n\n" << unknown << "\n\nGuess a letter: ";
cin >> letter;
// Fill secret word with letter if the guess is correct,
// otherwise increment the number of wrong guesses.
if (!Letter_Fill(letter, word, unknown)){
cout << endl << "Whoops! That letter isn't in there!" << endl;
num_of_wrong_guesses++;
}
else
cout << endl << "You found a letter! Isn't that exciting!" << endl;
// Tell user how many guesses has left.
cout << "You have " << MAX_TRIES - num_of_wrong_guesses << " guesses left." << endl;
// Check if user guessed the word.
if (word==unknown){
cout << word << endl << "Yeah! You got it!";
break;
}
}
if(num_of_wrong_guesses == MAX_TRIES){
cout << "\nSorry, you lose...you've been hanged." << endl
<< "The word was : " << word << endl;
}
cin.ignore();
cin.get();
return 0;
}
/* Take a one character guess and the secret word, and fill in the
unfinished guessword. Returns number of characters matched.
Also, returns zero if the character is already guessed. */
int Letter_Fill (char guess, string secretword, string &guessword){
int matches=0,len=secretword.length();
for (int i = 0; i< len; i++){
// Did we already match this letter in a previous guess?
if (guess == guessword[i])
return 0;
// Is the guess in the secret word?
if (guess == secretword[i]){
guessword[i] = guess;
matches++;
}
}
return matches;
}