In this article, we will implement a game of hangman c++. The game applies the following programming concepts in the language:
The hangman c++ code is documented clearly outlining how each block of code allows the game to function properly. If you are interested to get stuck in video game programming, I recommend the book “Beginning C++ through game programming“. With this book, you instantly start to get into programming games with C++ and it was one of the few resources I understood when I began with C++.
/* ==================================================================== Hangman in C++ Made By Sahil Bora Made with Visual Studio 2010 ==================================================================== */ //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− // Included files //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− #include <iostream> #include <string> #include <vector> #include <algorithm> #include <ctime> #include <cctype> using namespace std; //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− // Main part of the game //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− int main() { //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− // SetUp of the game //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− const int MAX_WRONG = 8; // Maxiumum number of incorrect guesses allowed vector<string> words; // collection of possible words to guess words.push_back("GUESS"); words.push_back("HANGMAN"); words.push_back("DIFFICULT"); //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− //Randomize the words //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− srand(time(0)); random_shuffle(words.begin(), words.end()); const string THE_WORD = words[0]; // word to guess int wrong = 0; // number of incorrect guesses string soFar(THE_WORD.size(), '_'); // word guessed so far string used = ""; // letters already guessed //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− // Main screen //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− cout << "Welcome to Hangman. Good luck!\n"; //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− // Main Loop //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− while((wrong < MAX_WRONG) && (soFar != THE_WORD)) { cout << "\nYou have " << (MAX_WRONG − wrong) << "incorrect guesses left.\n"; cout << "\nYou've used the following letters:\n" << used << endl; cout << "\So far, the word is:\n" << soFar << endl; //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− // Getting the Player's Guess //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− char guess; cout << "\nEnter your guess: "; cin >> guess; guess = toupper(guess); // make uppercase since secret word in uppercase while(used.find(guess) != string::npos) { cout << "\nYou have already guessed" << guess << endl; cout << "Ente your guess "; cin >> guess; guess = toupper(guess); } used += guess; //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− // If it's the word or not //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− if (THE_WORD.find(guess) != string::npos) { cout << "That's right! " << guess << " is in the world.\n"; //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− // Update soFar to included newly guessed letter //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− for (int i = 0; i < THE_WORD.length(); ++i) if (THE_WORD[i] == guess) soFar[i] = guess; } else { cout << "Sorry " << guess << " isn't in the word.\n"; ++wrong; } } //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− // Ending the Game //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− if (wrong == MAX_WRONG) cout << "\nYou're been hanged"; else cout << "\nYou guessed it"; cout << "\nThe word was " << THE_WORD << endl; return 0; }
Share this post