Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <vector>
- #include <algorithm>
- #include <cmath>
- using namespace std;
- inline void Pause() { system("Pause"); }
- inline void Clear() { system("CLS"); }
- #define MAX_ITEMS 10
- //Variables
- string title = "-----[ Hangman ]-----\n --- by Aero ---\n\n";
- bool HasWon = false;
- vector<string> Answers =
- {
- "APPLE",
- "NEW YORK",
- "I WAS BORN ON A PIRATE SHIP",
- "RUSH HOUR 2",
- "BARBECUE SAUCE",
- "THIS LAND IS YOUR LAND",
- "MIND YOUR OWN BUSINESS!",
- "LOST AND FOUND",
- "JURASSIC PARK",
- "FUTURAMA",
- "RED SOLO CUP",
- "I THINK I'M PARANOID",
- "TELL ME SOMETHING I DON'T KNOW",
- "DO YOU KNOW DA WAE?",
- "SOME PEOPLE CALL ME THE SPACE COWBOY",
- "KEURIG",
- "CHAPSTICK"
- };
- //functions
- int strsame(string input1, string input2)
- {
- if (input1 == input2) return 1;
- return 0;
- }
- void OpenAddAnswers()
- {
- Clear();
- cout << title << "Enter phrases you'd like to add to the answers list:\nTotal Answers: " << Answers.size() << "\nType \"exit\" to return to the main menu.\nPrevious item: " << Answers[Answers.size() - 1] << "\n";
- string input;
- getline(cin, input);
- if (!strsame(input, "exit"))
- {
- transform(input.begin(), input.end(), input.begin(), ::toupper);
- if(input.length() > 0) Answers.push_back(input);
- OpenAddAnswers();
- }
- }
- void ShowNoose(int frame)
- {
- switch (frame)
- {
- case 0:
- {
- cout << "\n" <<
- " ________ \n" <<
- " | | \n" <<
- " | \n" <<
- " | \n" <<
- " | \n" <<
- " | \n" <<
- " | \n" <<
- " | \n" <<
- " _____|__ \n";
- break;
- }
- case 1:
- {
- cout << "\n" <<
- " ________ \n" <<
- " | | \n" <<
- " ( ) | \n" <<
- " | \n" <<
- " | \n" <<
- " | \n" <<
- " | \n" <<
- " | \n" <<
- " _____|__ \n";
- break;
- }
- case 2:
- {
- cout << "\n" <<
- " ________ \n" <<
- " | | \n" <<
- " ( ) | \n" <<
- " | | \n" <<
- " | | \n" <<
- " | | \n" <<
- " | \n" <<
- " | \n" <<
- " _____|__ \n";
- break;
- }
- case 3:
- {
- cout << "\n" <<
- " ________ \n" <<
- " | | \n" <<
- " ( ) | \n" <<
- " | | \n" <<
- " | | \n" <<
- " | | \n" <<
- " / | \n" <<
- " | \n" <<
- " _____|__ \n";
- break;
- }
- case 4:
- {
- cout << "\n" <<
- " ________ \n" <<
- " | | \n" <<
- " ( ) | \n" <<
- " | | \n" <<
- " | | \n" <<
- " | | \n" <<
- " / \\ | \n" <<
- " | \n" <<
- " _____|__ \n";
- break;
- }
- case 5:
- {
- cout << "\n" <<
- " ________ \n" <<
- " | | \n" <<
- " ( ) | \n" <<
- " | | \n" <<
- " /|\\ | \n" <<
- " | | \n" <<
- " / \\ | \n" <<
- " | \n" <<
- " _____|__ \n";
- break;
- }
- case 6:
- {
- cout << "\n" <<
- " ________ \n" <<
- " | | \n" <<
- " ( ) | \n" <<
- " \\|/ | \n" <<
- " | | \n" <<
- " | | \n" <<
- " / \\ | \n" <<
- " | \n" <<
- " _____|__ \n";
- break;
- }
- }
- }
- void PlayGame()
- {
- vector<string> BadResponses;
- HasWon = false;
- string input;
- string CorrectAnswer = Answers[rand() % Answers.size()];
- string AnswerDisplay;
- for (int i = 0; i < CorrectAnswer.size(); i++)
- {
- if (!(CorrectAnswer[i] == ' '))
- {
- switch (CorrectAnswer[i])
- {
- case '\'':
- {
- AnswerDisplay.replace(i, 1, "'");
- break;
- }
- case ';':
- {
- AnswerDisplay.replace(i, 1, ";");
- break;
- }
- case ':':
- {
- AnswerDisplay.replace(i, 1, ":");
- break;
- }
- case ',':
- {
- AnswerDisplay.replace(i, 1, ",");
- break;
- }
- case '!':
- {
- AnswerDisplay.replace(i, 1, "!");
- break;
- }
- case '?':
- {
- AnswerDisplay.replace(i, 1, "?");
- break;
- }
- default:
- {
- AnswerDisplay.replace(i, 1, "_");
- break;
- }
- }
- }
- else AnswerDisplay.replace(i, 1, " ");
- }
- while (!HasWon && BadResponses.size() < 5)
- {
- Clear();
- ShowNoose(BadResponses.size());
- cout << "\nIncorrect Responses: " << BadResponses.size() << "/5: ";
- for (int i = 0; i < BadResponses.size(); i++)
- {
- cout << BadResponses[i] << ", ";
- }
- cout << "\n\n";
- for (int i = 0; i < CorrectAnswer.length(); i++)
- {
- cout << AnswerDisplay[i] << " ";
- }
- cout << "\n\n";
- getline(cin, input);
- transform(input.begin(), input.end(), input.begin(), ::toupper);
- if (input.length() > 1)
- {
- if (!strsame(input, CorrectAnswer))
- {
- BadResponses.push_back(input);
- if (BadResponses.size() == 5)
- {
- AnswerDisplay = CorrectAnswer;
- }
- }
- else
- {
- AnswerDisplay = CorrectAnswer;
- HasWon = true;
- }
- }
- else if (input.length() == 1)
- {
- int count = 0;
- int underscores = 0;
- for (int i = 0; i < CorrectAnswer.size(); i++)
- {
- if (input[0] == CorrectAnswer[i])
- {
- AnswerDisplay.replace(i, 1, input);
- count++;
- }
- if (AnswerDisplay[i] == '_')
- {
- underscores++;
- }
- }
- if (underscores == 0) //Guessed all correct letters
- {
- HasWon = true;
- }
- if (count == 0)
- {
- BadResponses.push_back(input);
- if (BadResponses.size() == 5)
- {
- AnswerDisplay = CorrectAnswer;
- }
- }
- }
- }
- Clear();
- ShowNoose(BadResponses.size());
- cout << "\nIncorrect Responses: " << BadResponses.size() << "/5: ";
- for (int i = 0; i < BadResponses.size(); i++)
- {
- cout << BadResponses[i] << ", ";
- }
- cout << "\n\n";
- for (int i = 0; i < CorrectAnswer.length(); i++)
- {
- cout << AnswerDisplay[i] << " ";
- }
- if (HasWon)
- {
- cout << "\n\nCongratulations! You Guessed correctly!\n";
- }
- else
- {
- cout << "\n\nGAME OVER! You didn't guess correctly.\n";
- }
- Pause();
- }
- void InitGame()
- {
- Clear();
- int input;
- cout << title;
- if (HasWon) ShowNoose(6);
- else ShowNoose(5);
- cout << "\n1) Play Game\n2) Add Answers\n3) Exit Game\n";
- cin >> input;
- switch (input)
- {
- case 123:
- {
- Clear();
- cout << title << "Debug Info:\nAnswers.size: " << Answers.size() << "\n";
- for (int i = 0; i < Answers.size(); i++)
- {
- cout << i << ") " << Answers[i] << "\n";
- }
- Pause();
- InitGame();
- break;
- }
- case 1:
- {
- PlayGame();
- InitGame();
- break;
- }
- case 2:
- {
- OpenAddAnswers();
- InitGame();
- break;
- }
- case 3:
- {
- break;
- }
- default:
- {
- InitGame();
- break;
- }
- }
- }
- //main
- int main()
- {
- HasWon = false;
- InitGame();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement