Garey

Hangman-Rado

Nov 1st, 2017
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.35 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <ctime>
  4. #include <string>
  5.  
  6. using namespace std;
  7.  
  8. string alphabet = "a b c d e f g h i j k l m n o p q r s t u v w x y z";
  9. string line, guessed, word, display;
  10. int numlines = 0, inttries = 0;
  11. ifstream myfile("words.txt");
  12.  
  13. void makeDisplay() {
  14.     display = "";
  15.  
  16.     for (size_t k = 0;k<string(word).size();k++)
  17.         display = display + "_";
  18.  
  19.     guessed = "_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _";
  20. }
  21.  
  22.  
  23. string makeMan() {
  24.     switch (inttries) {
  25.         case 10:
  26.             return "\n  ================|\n //               |\n ||               |\n ||               |\n ||              _^_\n ||             / ..\\\n ||            [  _  ]\n ||             \\___/\n ||\n ||               ||    \n ||              /||\\\n ||             //||\\\\\n ||            // || \\\\\n ||            *  ||  *\n ||              //\\\\\n ||             //  \\\\\n /\\            //    \\\\\n//\\\\         ***      ***\n/||\\\\\n_||_\\\\\n";
  27.         case 9:
  28.             return "\n  ================|\n //               |\n ||               |\n ||               |\n ||              _^_\n ||             / ..\\\n ||            [  _  ]\n ||             \\___/\n ||               ||\n ||              /||\\\n ||             //||\\\\\n ||            // || \\\\\n ||            *  ||  *\n ||              //\n ||             //\n ||            //\n /\\          ***\n//\\\\ \n/||\\\\ \n_||_\\\\\n";
  29.         case 8:
  30.             return "\n  ================|\n //               |\n ||               |\n ||               |\n ||              _^_\n ||             / ..\\\n ||            [  _  ]\n ||             \\___/\n ||               ||\n ||              /||\\\n ||             //||\\\\\n ||            // || \\\\\n ||            *  ||  *\n ||\n ||\n ||\n /\\\n//\\\\\n/||\\\\\n_||_\\\\\n";
  31.         case 7:
  32.             return "\n  ================|\n //               |\n ||               |\n ||               |\n ||              _^_\n ||             / ..\\\n ||            [  _  ]\n ||             \\___/\n ||               ||\n ||              /||\n ||             //||\n ||            // ||\n ||            *  ||\n ||\n ||\n ||\n /\\\n//\\\\\n/||\\\\\n_||_\\\\\n";
  33.         case 6:
  34.             return "\n  ================|\n //               |\n ||               |\n ||               |\n ||              _^_\n ||             / ..\\\n ||            [  _  ]\n ||             \\___/\n ||               ||\n ||               ||\n ||               ||\n ||               ||\n ||               ||\n ||\n ||\n ||\n /\\\n//\\\\\n/||\\\\\n_||_\\\\\n";
  35.         case 5:
  36.             return "\n  ================|\n //               |\n ||               |\n ||               |\n ||              _^_\n ||             / ..\\\n ||            [  _  ]\n ||             \\___/\n ||               ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n /\\\n//\\\\\n/||\\\\\n_||_\\\\\n";
  37.         case 4:
  38.             return "\n  ================|\n //               |\n ||               |\n ||               |\n ||              _^_\n ||             / ..\\\n ||            [  _  ]\n ||             \\___/\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n /\\\n//\\\\\n/||\\\\\n_||_\\\\\n";
  39.         case 3:
  40.             return "\n  ================|\n //               |\n ||               |\n ||               |\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n /\\\n//\\\\\n/||\\\\\n_||_\\\\\n";
  41.         case 2:
  42.             return "\n  ================\n //\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n /\\\n//\\\\\n/||\\\\\n_||_\\\\\n";
  43.         case 1:
  44.             return "\n\n\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n ||\n /\\\n//\\\\\n/||\\\\\n_||_\\\\\n";
  45.         case 0:
  46.             return "\n\n\nPress * anytime to quit!\n\n\n\n\n\n\n\n\n\n\n\n /\\\n//\\\\\n/||\\\\\n_||_\\\\\n";
  47.     }
  48.  
  49.     return " ";
  50. }
  51.  
  52. void guesslet(char a) {
  53.     int correct = 0, tried = 0, validlet = 0;
  54.     size_t k = 0;
  55.  
  56.     for (k = 0; k < 51; k += 2)
  57.         if (alphabet[k] == a) {
  58.             validlet = 1;
  59.  
  60.             if (guessed[k] != a)
  61.                 guessed[k] = a;
  62.             else
  63.                 tried = 1;
  64.         }
  65.  
  66.     if ((tried != 1) && (validlet == 1)) {
  67.         for (k = 0;k<string(word).size();k++)
  68.             if (word[k] == a)
  69.             {
  70.                 display[k] = a;
  71.                 correct = 1;
  72.             }
  73.         if (correct != 1)
  74.             inttries++;
  75.     }
  76. }
  77.  
  78. void selectRandLine() {
  79.     int randline = 0, wordlength = 0, k = 0;
  80.     string newword;
  81.  
  82.     randline = (rand() % numlines) + 1;
  83.  
  84.     myfile.clear();
  85.     myfile.seekg(0, ios::beg);
  86.  
  87.     for (int lineno = 0; getline(myfile, newword) && lineno < randline; lineno++);
  88.  
  89.     wordlength = string(newword).size();
  90.     word = "";
  91.  
  92.     for (int i = 0; wordlength>i; i++) {
  93.         for (k = 0; k < 51; k += 2)
  94.             if (alphabet[k] == newword[i])
  95.                 word = word + newword[i];
  96.     }
  97. }
  98.  
  99. int main() {
  100.     char a = '.';
  101.  
  102.     srand((unsigned)time(0));
  103.  
  104.     while (getline(myfile, line)) ++numlines;
  105.  
  106.     while (a != '*') {
  107.         selectRandLine();
  108.         makeDisplay();
  109.         inttries = 0;
  110.  
  111.         while (display != word) {
  112.             system("cls");
  113.  
  114.             cout << makeMan();
  115.             cout << "Please guess a letter!\nWord: " << display << "\nGuessed: " << guessed << "\nTries left:" << 10 - inttries << "\n";
  116.             cin >> a;
  117.             guesslet(a);
  118.  
  119.             if (a == '*') inttries = 10;
  120.  
  121.             if (inttries >= 10) display = word;
  122.         }
  123.         cout << makeMan();
  124.                            
  125.         if (inttries >= 10)
  126.             cout << "\nYou lost! The word was \"" << word << "\".\nPress any key to play again, or * to quit.\n\n";
  127.        
  128.         if (inttries < 10)
  129.             cout << "\nYou won! The word is \"" << word << "\"!\nPress any key to play again, or * to quit.\n\n";
  130.        
  131.         cin >> a;
  132.     }
  133.  
  134.     return 0;
  135. }
Add Comment
Please, Sign In to add comment