Results 1 to 4 of 4

Thread: Mind Boggling Error

Threaded View

  1. #1

    Thread Starter
    Stuck in the 80s The Hobo's Avatar
    Join Date
    Jul 2001
    Location
    Michigan
    Posts
    7,256

    Unhappy Mind Boggling Error

    This has me really stumped. This is a hangman program I wrote for my C++ class. I'm trying to have it store guessed letters in "char guesses[50]" yet somehow it's pulling other variables values into there and not working at all.

    You might have to run the code to see what I mean:

    Code:
    #include <iostream>
    #include <iomanip>
    #include <stdlib.h>
    #include <windows.h>
    using namespace std;
    
    //class for storing our words and definitions:
    class word_list {
        public:
        char word[10];
        char hint[255];
    };
    
    //declare functions:
    void wordinfo(int length, char word[10]);
    void printxy(int x, int y, char text[255]);
    void dopicture(int num);
    int location(char string[10], char character);
    
    int main() {
    	
        int choice, chances = 0;
        word_list wordlist[5];
        char again;
    
        char word[10] = "";
        char guesses[50] = {""}; //********* <---
        char guess;
    	
        //setup words (in uppercase) and hints:
        strcpy(wordlist[0].word,"DONKEY");
        strcpy(wordlist[0].hint,"This animal makes an ass of himself.");
        strcpy(wordlist[1].word,"PHONE");
        strcpy(wordlist[1].hint,"Ring! Ring!");
        strcpy(wordlist[2].word,"CHECKBOOK");
        strcpy(wordlist[2].hint,"It's easier to balance than a scale.");
        strcpy(wordlist[3].word,"BOAT");
        strcpy(wordlist[3].hint,"It floats. It carries. It");
        strcpy(wordlist[4].word,"KEYBOARD");
        strcpy(wordlist[4].hint,"Alphabetical/Numerical input device.");
    
        do {
            //setup our values:
            chances = 0;
            strcpy(word, "");
            //strcpy(guesses, ""); //********* <---
            choice = 0;
    
            system("CLS");
            //display welcome and menu:
            cout << "Welcome to Hangman, Man!" << endl << endl;
            cout << "Please choose a word (1) through (5): ";
            cin >> choice;
    
            //make sure acceptable value was entered:
            while (choice < 1 || choice > 5) {
                system("CLS");
                cout << "Bogus, man! Your choice needs to be a number (1) through (5)"
                << endl << endl;
                cout << "Please choose a word (1) through (5): ";
                cin >> choice;
            }
    		
    
            //start the game:
            do {
                system("CLS");
    
                //Give our hints, etc:
                cout << "Hangman, man!" << endl << endl;
                cout << "Hint: " << wordlist[choice - 1].hint << endl;
                cout << "Word: ";
                wordinfo(strlen(wordlist[choice - 1].word), word);
    			
                cout << endl;
                cout << "Guessed Letters: " << guesses << endl << endl; //********* <---
    			
                //dopicture(chances);
    						
                cout << "Enter guess: ";
                cin >> guess;
    			
                //add letter to guessed letters (guesses)
                strcpy(guesses, strupr(guesses + guess)); //********* <---
    
                //check to see if letter exists in word
                if (location(wordlist[choice - 1].word, guess) != -1) {
                    word[location(wordlist[choice - 1].word, guess)] = guess;
                    if (strcmp(word, wordlist[choice - 1].word) == 0) {
                        system("CLS");
                        cout << "You won with " << 6 - chances << " chances!";
                        cout << endl << endl;
                        break;
                    } else {
                        system("CLS");
                        cout << "Good Guess!" << endl << endl;
                        system("PAUSE");
                        system("CLS");
                    }
                } else {
                    chances++;
                    if (chances == 6) {
                        //dopicture(chances);
                        cout << "Sorry, you didn't win this time..." << endl;
                        cout << "The word was " << wordlist[choice - 1].word << endl << endl;
                    } else {
                        system("CLS");
                        cout << "Whoa! Not in this word, buddy. Try again!" << endl;
                        cout << "You have " << 6 - chances << " left." << endl << endl;
                        system("PAUSE");
                        system("CLS");
                    }
                }
            } while (chances < 6);
    		
            cout << "Would you like to play again? (y) or (n): ";
            cin >> again;
        } while (again == 'y');
    
        return 0;
    }
    
    int location(char string[10], char character) {
        for (int i = 0; i < strlen(string); i++) {
            if (string[i] == character) {
                return i;
                break;
            } 
        }
    
        return -1;
    }
    
    void wordinfo(int length, char word[10]) {
    	
        for (int i = 0; i < length; i++) {
            if (word[i] == NULL) {
                cout << " _ ";
            } else {
                cout << " " << word[i] << " ";
            }
        }
    }
    Much thanks to anyone who can figure this out!
    Last edited by The Hobo; Sep 26th, 2002 at 09:18 PM.
    My evil laugh has a squeak in it.

    kristopherwilson.com

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width