| | |
Help with Hangman( different version)_
Please support our C++ advertiser: Intel Parallel Studio Home
Thread Solved |
•
•
Join Date: Oct 2008
Posts: 101
Reputation:
Solved Threads: 0
C++ Syntax (Toggle Plain Text)
// Description: This is a computer version of the game hangman, the user // can play against a 2nd player or the computer, and he can enter how many // guesses he gets, // // Start of program // Header file definitions #include <iostream> // Standard input/output #include <string> // String manipulation #include <cctype> // Character manipulation and testing #include <fstream> // File stream #include <cstdlib> // Used for random function #include "DRAW.h" // Draws hangman using namespace std; // Function declerations void DrawGallows(int State); void instruction(int& choice); // Gives instructions and gets choice void usergame(int i); // Plays 2nd user game void compgame(int i); // Plays against computer void test(string word, char letter, int& numwrong, string& temp, int i); // Tests current letter and replaces starred word void lchosen(char letter, string& letterchosen, int& check, int& chosencounter, int i); // Checks current letter and adds it to letters chosen output if not entered already void rnd(string& word, int i); // Gets random word from file inline istream& Flush(istream& stream); // Flushes cin stream // Start of main int main() { int i = 0; // Counter variable for loops int exit = 0; // Main loop exit variable int choice; // Users inputed choice for type of game or to exit // Main control loop do { // while exit != 1 system("cls"); // Clear the screen instruction(choice); // Give instructions switch(choice) { case 1: usergame(i); // Calls user game break; case 2: compgame(i); // Calls computer game break; case 3: cout << "Goodbye" << endl; // Exits exit = 1; break; default: cerr << "Invalid choice - try again" << endl; // Invalid choice erroe } } while (exit != 1); // End main loop system("pause"); return 0; } // End main // Subprograms // --------------------------------------------------------------------- // Instructions subprogram void instruction(int& choice) { cout << " -Hangman-" << endl << endl; cout << " Created by Kyle Burmark" << endl << endl; cout << "*****************************************" << endl; cout << endl; cout << " Enter -1- to play against user" << endl; cout << " Enter -2- to play against computer" << endl; cout << " Enter -3- to quit" << endl; cout << endl; cout << "*****************************************" << endl << endl; cout << "Choice: "; // Get user choice cin >> choice; // Bad data type check while (!cin) { cerr << "Invalid character" << endl << "Enter again - choice: "; Flush(cin); cin >> choice; } // End check system("cls"); } // End instruction // User game subprogram void usergame(int i) { int numguess = 0; // Number of guesses player gets int numwrong = 0; // Number of wrong guesses player has so far int check; // A variable to test whether to check the letter entered in the test function int wordcheck; // A variable to check whether the user has entered an invalid word int end = 0; // A variable to test what to output to the user and to exit the usergame loop int chosencounter = 0; // A counter to tell the replace function where to put the letter chosen in the letterchosen string char letter; // User inputed letter string word; // Word user is trying to guess string temp; // Updated output word user sees string letterchosen = " "; // Defines length of letterchosen string do { // while user puts in guesses outside of allowed range cout << "How many chances does the person have (4 - 10): "; cin >> numguess; } while (numguess < 4 || numguess > 10); cout << "Enter word 2nd user: "; cin >> word; do { // while user inputs bad word wordcheck = 0; for (int i = 0; i < word.length(); i++) { if (!isalpha(word.at(i))) { wordcheck = 1; } } if (wordcheck == 1) { cout << "Invalid - Enter word again: "; cin >> word; } } while (wordcheck == 1); temp = word; // Sets temp string length to word string length // Replace temp with stars loop for (i = 0; i < word.length(); i++) { temp.replace(i, 1, 1,'*'); } // End loop system("cls"); // Main game loop do { // Tests if user guessed word if (word == temp) { cout << endl << endl; cout << "You guessed it [ " << word << " ]" << endl << endl; system("pause"); end = 1; } // Tests if user failed to guess word if (numwrong == numguess) { cout << endl << endl; cout << "You failed" << endl << endl; system("pause"); end = 2; } // Play while above conditions aren't true if (end == 0) { cout << endl << endl << endl; cout << "Letters chosen: " << letterchosen << endl; cout << endl << endl << endl; cout << "Guesses left: " << numguess - numwrong << endl << endl; cout << " " << temp << endl << endl; cout << "Letter: "; cin >> letter; // Test for bad letter while (!isalpha(letter)) { Flush(cin); cout << "Not a letter - enter letter: "; cin >> letter; } // End test lchosen(letter, letterchosen, check, chosencounter, i); // Test whether to check letter against correct word string if (check == 0) { test(word, letter, numwrong, temp, i); } else { ; } // End test system("cls"); } // End game system("cls"); } while(end != 1 && end != 2); // End main game loop // Tests end variable to see what to display if (end == 2) { cout << "Correct word was [ " << word << " ]" << endl << endl; system("pause"); } if (end == 1) { cout << " "; } system("cls"); } // End user game // Start computer game // See user game for variable and loop information void compgame(int i) { int numguess = 0; int numwrong = 0; int check; int end = 0; int chosencounter = 0; char letter; string word; string temp; string letterchosen = " "; do { cout << "How many chances do you want (4 - 10): "; cin >> numguess; } while (numguess < 4 || numguess > 10); rnd(word, i); // Gets random word temp = word; for (i = 0; i < word.length(); i++) { temp.replace(i, 1, 1, '*'); } system("cls"); do { int State = 1; void DrawGallows(int State); if (word == temp) { cout << endl << endl; cout << "You guessed it [ " << word << " ]" << endl << endl; system("pause"); end = 1; } if (numwrong == numguess) { cout << endl << endl; cout << "You failed" << endl << endl; system("pause"); end = 2; } if (end == 0) { cout << endl << endl << endl; cout << "Letters chosen: " << letterchosen << endl; cout << endl << endl << endl; cout << "Guesses left: " << numguess - numwrong << endl << endl; cout << " " << temp << endl << endl; cout << "Letter: "; cin >> letter; while (!isalpha(letter)) { Flush(cin); cout << "Not a letter - enter letter: "; cin >> letter; } lchosen(letter, letterchosen, check, chosencounter, i); if (check == 0) { test(word, letter, numwrong, temp, i); } else { ; } system("cls"); } system("cls"); } while(end != 1 && end != 2); if (end == 2) cout << "Correct word was [ " << word << " ]" << endl << endl; system("pause"); if (end == 1) cout << endl; system("cls"); } // End computer game // Checks current letter chosen by user void lchosen(char letter, string& letterchosen, int& check, int& chosencounter, int i) { check = 0; // Check if letter is equal to any letter in letterchosen string loop for (i = 0; i < letterchosen.length(); i++) { if (letter == letterchosen.at(i)) { check = 1; } } // End loop // Test if letter is already chosen if (check == 1) { cout << endl; cout << "Letter already chosen" << endl; system("pause"); } // Puts letter in string if not chosen else { letterchosen.replace(chosencounter, 1, 1, letter); chosencounter++; } } // End lchosen function // Tests whether letter is in word string void test(string word, char letter, int& numwrong, string& temp, int i) { int check2 = 0; // Checks whether letter is in word string, = 1 if it is // Check for letter match loop for (i = 0; i < word.length(); i++) { if (letter == word.at(i)) { temp.replace(i, 1, 1, letter); check2 = 1; } } // End loop // Displays "wrong letter" if user inputed bad letter if (check2 == 0) { cout << endl; cout << "Wrong letter" << endl; system("pause"); numwrong++; } } // End test function // Gets random word void rnd(string& word, int i) { int x; // Random number to pass to word file loop ifstream ins; // File stream srand(time(NULL)); // Gets better random number based on time x = rand()%100; // Gets number 0 - 99 ins.open("words.txt"); // Opens random word file // Tests for bad file and gets word if not a bad file if (ins.fail()) { cerr << "Words.txt is not in same folder as hangman.exe, " << endl << "put in correct file and run again and make sure it's " << endl << "called words.txt" << endl; system("pause"); main(); } else { for (i = 0; i < (x + 1); i++) { getline(ins, word); } } // End test ins.close(); // Close file } // End random function // This will Draw the gallows according to the state void DrawGallows(int State) { if(State==6) { // The \\ will translate as '\' because it is a special char cout<<endl<<endl <<" +----+ "<<endl <<" | | "<<endl <<" | O "<<endl <<" | /|\\ "<<endl <<" | / \\ "<<endl <<" |Your Dead "<<endl <<" ============"<<endl<<endl; } else if(State==5) { cout<<endl<<endl <<" +----+ "<<endl <<" | | "<<endl <<" | O "<<endl <<" | /|\\ "<<endl <<" | \\ "<<endl <<" | "<<endl <<" ============"<<endl<<endl; } else if(State==4) { cout<<endl<<endl <<" +----+ "<<endl <<" | | "<<endl <<" | O "<<endl <<" | /|\\ "<<endl <<" | "<<endl <<" | "<<endl <<" ============="<<endl<<endl; } else if(State==3) { cout<<endl<<endl <<" +----+ "<<endl <<" | | "<<endl <<" | O "<<endl <<" | /| "<<endl <<" | "<<endl <<" | "<<endl <<" ============="<<endl<<endl; } else if(State==2) { cout<<endl<<endl <<" +----+ "<<endl <<" | | "<<endl <<" | O "<<endl <<" | | "<<endl <<" | "<<endl <<" | "<<endl <<" ============="<<endl<<endl; } else if(State==1) { cout<<endl<<endl <<" +----+ "<<endl <<" | | "<<endl <<" | "<<endl <<" | "<<endl <<" | "<<endl <<" | "<<endl <<" ============="<<endl<<endl; } } inline istream& Flush(istream& stream) { stream.clear(); int chars_to_skip = stream.rdbuf()->in_avail(); return stream.ignore(chars_to_skip); } // End flush function // End subprogams // End program
my problem is I was trying to top down design this program by solving each function seperately. However, I am consfued how to link the function draw to the main function. please help me. thank you
http://www.daniweb.com/forums/thread159042.html
http://www.daniweb.com/forums/thread159142.html
http://www.daniweb.com/forums/thread159161.html
http://www.daniweb.com/forums/thread159192.html
How many more versions are you going to grace the board with?
http://www.daniweb.com/forums/thread159142.html
http://www.daniweb.com/forums/thread159161.html
http://www.daniweb.com/forums/thread159192.html
How many more versions are you going to grace the board with?
![]() |
Similar Threads
- hangman game in C++ (C++)
- newbie in need of help for hangman game (Python)
- please help i have a log file!! (Viruses, Spyware and other Nasties)
- Help! My desktop is empty among other things (Viruses, Spyware and other Nasties)
- Can u help me with hangman code in vb.net please :( (VB.NET)
Other Threads in the C++ Forum
- Previous Thread: Quick question -
- Next Thread: Help Please!!!
| Thread Tools | Search this Thread |
api array arrays beginner binary bitmap c++ c/c++ calculator char char* class classes coding compile compiler console conversion convert count data database delete desktop developer directshow dll dynamic dynamiccharacterarray email encryption error file forms fstream function functions game getline google graph homeworkhelper iamthwee ifstream input int integer java lib linkedlist linker linux loop looping loops map math matrix memory multiple news node number numbertoword output parameter pointer problem program programming project proxy python random read recursion recursive reference return rpg sorting string strings struct template templates test text tree unix url vector video visualstudio win32 windows winsock word wordfrequency wxwidgets






