Tuesday, October 6, 2009

A Code Snippet From Hangman

I was originally going to post the entire code for my Hangman project but in retrospect it seemed like a bad idea. The code is long as all hell and spread across eleven files. Some people who have downloaded the Hangman game can't get it to run and that is my fault. I code in the Vista environment and do not understand how to code for older versions of Windows such as XP or 98. I am however taking a class on operating systems this term so if all things go well I will be able to make programs for everyone to enjoy and not just for those on vista. One would think the Operating System wouldn't work to terribly against my since I didn't use any compiler specific functions nor did I use any System libraries.

Now that you have heard my excuse here is the function I used to check if the user was correct or not. String manipulation is a powerful but hard to follow thing. To understand the code you need to know what the variables are currently storing.

currentProgress looks something like this "*a*a*a*".
currentWord looks something like this "bananas".
and guessedWord is a single character that the user entered that was passed to the function using guessWord(userinput)


// This function checks for every occurance of the guessed character. Returns true if char
// is found even once. returns false if it isn't. This also update current progress and sets the
// stars to the letter they should be if that letter is the guessedWord.
bool hmGame::guessWord(char guessedWord) {
 
 size_t found;

 found = gameDict.currentWord.find(guessedWord) ;
 if(found!=string::npos){
  while(found!=string::npos){
   gameDict.currentProgress.replace(found,1,1,guessedWord) ;
   found = gameDict.currentWord.find(guessedWord,found+1) ;
  }
  return true ;
 } else {
  cout << "Incorrect Guess !" << endl << endl ;
  return false ;
 }
}

- A. R. McGowan.

learn the code, don't steal it

No comments:

Post a Comment