Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <windows.h>
- #include <algorithm>
- #include <string>
- #include <ctime>
- using namespace std;
- //function prototypes
- void writeString(string, int, int);
- void writeChar(char, int, int);
- void drawScaffold();
- void playGame(string);
- int main() {
- string setWord = "";
- char answer = ' ';
- const int whiteText = 7;
- string wordBankArray[17] = { "structure", "function", "assign", "compare",
- "void", "int", "double", "char", "string",
- "datatype", "pointer", "find", "length",
- "replace", "substr", "classes", "insert"};
- srand(static_cast<int>(time(0)));
- do {
- setWord = wordBankArray[rand() % (16 + 1)];
- playGame(setWord);
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), whiteText);
- writeString("Would you like to play again? <y/n> ", 30, 18);
- cin >> answer;
- if(answer == 'n' || answer == 'N')
- writeString("", 30, 19);
- }while(answer == 'y' || answer == 'Y');
- return 0;
- }//end function
- void writeString(string str, int x, int y) {
- COORD pos = {x, y};
- SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
- cout << str;
- }//end function
- void writeChar(char c, int x, int y) {
- COORD pos = {x, y};
- SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
- cout << c;
- }//end function
- void drawScaffold() {
- COORD pos = {0, 0};
- SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
- system("cls");
- writeString("Used Letters", 32, 0);
- writeChar(char(169), 10, 24);
- cout << "---------";
- cout << char(170);
- pos.X = 15; pos.Y = 16;
- SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
- for(int x = 0; x < 7; x++) {
- pos.Y++;
- SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), pos);
- cout << char(179);
- }//end for
- writeChar(char(169), 15, 16);
- cout << "-----";
- cout << char(170);
- }//end function
- void playGame(string setWord) {
- //declare booleans
- bool gameOver = false;
- bool dashReplace = false;
- //declare variables
- const 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";
- string usedLetters = "_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _";
- string letter = "";
- string guessWord = "";
- unsigned int numChars = static_cast<int>(setWord.length());
- unsigned int numIncorrect = 0;
- transform(setWord.begin(), setWord.end(), setWord.begin(), toupper);
- guessWord.assign(numChars, '_'); //assigns a dash to however many characters in setWord
- for(unsigned int i = 1; i < (numChars * 2); i += 2)
- guessWord.insert(i, " "); //inserts a blank space between each dash in guessWord
- drawScaffold();
- writeString("Guess this word: ", 30, 15);
- cout << guessWord;
- writeString(usedLetters, 12, 2);
- while(gameOver == false) {
- do {
- writeString("Enter a letter: ", 30, 16);
- writeString("", 46, 16);
- cin >> letter;
- transform(letter.begin(), letter.end(), letter.begin(), toupper);
- //error routine that checks if the player inputed valid data for letter
- if(letter < "A" || letter > "Z" || letter.length() >= 2) {
- writeString("You entered an invalid character.", 30, 17);
- Sleep(1000);
- writeString(" ", 30, 17);
- }
- }while(letter < "A" || letter > "Z" || letter.length() >= 2);
- //adjusts usedLetters according to the selection
- usedLetters.replace(alphabet.find(letter), 1, letter);
- writeString(usedLetters, 12, 2);
- //adjusts guessWord according to the selection
- for(unsigned int i = 0; i < numChars; i++) {
- if(setWord.substr(i, 1) == letter) {
- guessWord.replace((i * 2), 1, letter);
- dashReplace = true;
- }
- }
- //determine whether a replacement was made
- if(dashReplace == true) {
- //display the status of the guessed word
- writeString("Guess this word: ", 30, 15);
- cout << guessWord;
- //searches guessWord for the first occurance of a dash, if none were found, find() returns a -1
- if((guessWord.find("_", 0)) == -1) {
- gameOver = true;
- writeString("Yes, the word is: ", 30, 17);
- transform(setWord.begin(), setWord.end(), setWord.begin(), tolower);
- setWord[0] = toupper(setWord[0]);
- cout << setWord;
- writeString("I think I'm in love!", 30, 18);
- int numColor = 0;
- for(int x = 0; x < 100; x++) {
- numColor++;
- if(numColor == 15)
- numColor = 1;
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), numColor);
- writeString("<3", 51, 18);
- Sleep(50);
- writeString(" ", 51, 18);
- }
- } else
- dashReplace = false;
- } else {
- numIncorrect++;
- switch (numIncorrect) {
- case 1:
- writeChar(char(179), 21, 17);
- writeChar(char(1), 21, 18); //Displays head
- break;
- case 2:
- writeChar(char(179), 21, 19); //Displays body
- writeChar(char(179), 21, 20);
- break;
- case 3:
- writeChar(char(47), 20, 19); //Displays first arm
- break;
- case 4:
- writeChar(char(92), 22, 19); //Displays second arm
- break;
- case 5:
- writeChar(char(47), 20, 21); //Displays first leg
- break;
- case 6:
- gameOver = true;
- writeChar(char(92), 22, 21); //Displays first leg
- Sleep(1000);
- writeString("Sorry, the word is: ", 30, 17);
- transform(setWord.begin(), setWord.end(), setWord.begin(), tolower);
- setWord[0] = toupper(setWord[0]);
- cout << setWord;
- break;
- default:
- break;
- }//end switch
- }//end else
- }//end while
- }//end function
Add Comment
Please, Sign In to add comment