#include #include #include #include #include #include #include using namespace std; unsigned int randnumber = 0; const char uppercaseletters[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; string lowercaseletters = "abcdefghijklmnopqrstuvwxyz"; string squery(string dataStr, string strStart, string strEnd){ int start, end; if (dataStr.length() == 0){ return ""; } else{ start = dataStr.find(strStart)+strStart.length(); end = dataStr.find(strEnd); return dataStr.substr(start, end - start); } } string encrypt(string str, int num){ for (int i = 0; i < str.length(); i++){ if ((str[i] != '=') && (str[i] != '&') && (str[i] != '%')){ str[i] = str[i] + num; } } return str; } string inttostring(int number){ switch(number){ case 0: return "0"; break; case 1: return "1"; break; case 2: return "2"; break; case 3: return "3"; break; case 4: return "4"; break; case 5: return "5"; break; case 6: return "6"; break; case 7: return "7"; break; case 8: return "8"; break; case 9: return "9"; break; default: return "0"; break; } } int iquery(string dataStr, string strStart, string strEnd){ int start, end; string str; int number; if (dataStr.length() == 0){ return 0; } else{ start = dataStr.find(strStart)+strStart.length(); end = dataStr.find(strEnd); str = dataStr.substr(start, end - start); if (str.length() == 0){ return 0; } else{ istringstream temp(str); temp >> number; return number; } } } void printLetters(string word, string alpha, int turn, bool gameover){ string url; cout << ""; for (unsigned int i = 0; i < 26; i++){ if (gameover){ url = ""; } else{ url = "char=" + lowercaseletters.substr(i, 1) + "&word=" + word + "&alpha=" + alpha + "&turn=" + inttostring(turn) + "&end\""; url = encrypt(url, 1); } cout << ""; if (i == 12){ cout << ""; } } cout << "
" << uppercaseletters[i] << "
" << endl; } void header(void){ cout << "Content-type: text/html\n\n" << "" << "" << "" << " HangMan " << ""; } bool printWord(string word, string alpha, int &turn, string letter){ bool switcher = true; bool winner = true; cout << "

"; for (unsigned int i = 0; i < word.length(); i++){ if (alpha.find(word[i]) != string::npos){ cout << word[i] << " "; if ((word[i] == letter[0]) && switcher){ turn--; switcher = false; } } else{ cout << "_ "; winner = false; } } cout << "

"; return winner; } string randomword(void){ string word; unsigned int count = 0; int randomnumber = 1 + rand() % 81520; ifstream file("wordlist.txt"); if (file.is_open()){ while ((file >> word) && (count != randomnumber)){ count++; } return word; } else{ cerr << "Wordlist file could not be opened." << endl; return ""; } } string getword(string query){ string word = ""; if (query.length() == 0){ return randomword(); } word = squery(query, "&word=", "&alpha"); if (word.length() == 0){ return randomword(); } else{ return word; } } string addLetter(string letter, string alpha, int &turn, string word){ if (alpha.find(letter) == string::npos){ return alpha + letter; } else{ if (alpha.length() != 0){ cout << "

You have already picked that letter! Try again.

" << endl; if (word.find(letter) == string::npos){ turn--; } } return alpha; } } bool hangmanDisplay(unsigned int turn, string word){ cout << "

Turn: " << turn << "

"; cout << "" << "" << "" << "" << "" << "" << "" << "" << "" << "" << "" << "" << "" << "" << "" << "" << "" << "" << ""; if (turn > 0){ cout << ""; } else{ cout << ""; } cout << "" << "" << "" << "" << "" << "" << "" << "" << ""; if (turn > 1){ cout << ""; } else{ cout << ""; } if (turn > 2){ cout << ""; } else{ cout << ""; } if (turn > 3){ cout << ""; } else{ cout << ""; } cout << "" << "" << "" << "" << "" << "" << "" << "" << ""; if ( turn > 4){ cout << ""; } else{ cout << ""; } cout << "" << "" << "" << "" << "" << "" << "" << "" << ""; if (turn > 5){ cout << ""; } else{ cout << ""; } cout << ""; if (turn > 6){ cout << ""; } else{ cout << ""; } cout << "" << "" << "" << "" << "" << "" << "" << "" << "" << "" << "" << "" << "" << "
[][][][]  
[]    b   
[]   / | \\  
[]    |   
[]   /  \\  
[]_______
"; if (turn > 7){ //If you pick more than 7 bad letters you lose. cout << "

You lose! The word was " << word << ". Play again?

"; return true; } else{ return false; } } int main(void){ bool gameover = false; string query = getenv("QUERY_STRING"); query = encrypt(query, -1); srand(time(0)); string word = getword(query); string letter = squery(query, "char=", "&word="); string alpha = squery(query, "&alpha=", "&turn="); int turn = iquery(query, "&turn=", "&end"); header(); turn++; alpha = addLetter(letter, alpha, turn, word); if (printWord(word, alpha+"%", turn, letter)){ cout << "

You win! Play again?

"; gameover = true; } if (hangmanDisplay(turn-1, word)){ gameover = true; } printLetters(word, alpha, turn, gameover); cout << "

Letters picked: " << alpha << "

"; cout << ""; return 0; }