When I compile the below source, I'm getting a psuedo-random number. This source code is not mine and I don't know anything about the randomize()
or the random()
functions. I know about srand()
and rand()
. Can someone explain the difference b/w these four functions and help me completely randomise this instance of The Hangman Game.
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
const int MAXLENGTH=80;
const int MAX_TRIES=5;
const int MAXROW=7;
int letterFill (char, char[], char[]);
void initUnknown (char[], char[]);
int main ()
{
char unknown [MAXLENGTH];
char letter;
int num_of_wrong_guesses=0;
char word[MAXLENGTH];
char words[][MAXLENGTH] =
{
"india",
"pakistan",
"nepal",
"malaysia",
"philippines",
"australia",
"iran",
"ethiopia",
"oman",
"indonesia"
};
//choose and copy a word from array of words randomly
randomize();
int n=random(10);
strcpy(word,words[n]);
// Initialize the secret word with the * character.
initUnknown(word, unknown);
// welcome the user
cout << "\n\nWELCOME TO...\n\n"
"\n{} {} {}{} {} {} {}}}}} {} {} {}{} {} {}"
"\n{} {} {} {} {}}} {} {} {}}} {{{} {} {} {}}} {}"
"\n{}{{}}{} {}{{}}{} {} {} {} {} {} {{}} {} {}{{}}{} {} {} {}"
"\n{} {} {} {} {} {{{} {} {{{{ {} {} {} {} {} {} {{{}"
"\n{} {} {} {} {} {} {}}}}} {} {} {} {} {} {}"
"\nGuess a country Name";
cout << "\n\nEach letter is represented by a star.";
cout << "\n\nYou have to type only one letter in one try";
cout << "\n\nYou have " << MAX_TRIES << " tries to try and guess the word.";
cout << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
// Loop until the guesses are used up
while (num_of_wrong_guesses < MAX_TRIES)
{
cout << "\n\n" << unknown;
cout << "\n\nGuess a letter: ";
cin >> letter;
// Fill secret word with letter if the guess is correct,
// otherwise increment the number of wrong guesses.
if (letterFill(letter, word, unknown)==0)
{
cout << endl << "Whoops! That letter isn't in there!" << endl;
num_of_wrong_guesses++;
}
else
{
cout << endl << "You found a letter! Isn't that exciting!" << endl;
}
// Tell user how many guesses has left.
cout << "You have " << MAX_TRIES - num_of_wrong_guesses;
cout << " guesses left." << endl;
// Check if they guessed the word.
if (strcmp(word, unknown) == 0)
{
cout << word << endl;
cout << "Yeah! You got it!\n\n>> YOU WIN <<\n$$ HERE'S THE TREASURE $$"<<endl<<endl;
cout<<"\n*******************************************************************************"
"\n | | | |"
"\n _________|________________.=""_;=.______________|_____________________|_______"
"\n| | ,-'_,='' `'=.| |"
"\n|___________________|__'=._'''-._ ''=.______________|___________________"
"\n | ''=._o''=._ _''=._ |"
"\n _________|_____________________:=._o '=._.'_.-='''=.__________________|_______"
"\n| | __.--' , ; ''=._o.' ,-'''-._ '. |"
"\n|___________________|_._' ,. .' ' '' , ''-._'-._ '. '__|___________________"
"\n | |o''=._' , '' '; .'. , '-._'-._; ; |"
"\n _________|___________| ;'-.o''=._; .' ' ''.' ' . '-._ /_______________|_______"
"\n| | |o; ''-.o''=._'' '' ' ,__.--o; |"
"\n|___________________|_| ; (#) '-.o ''=.'_.--'_o.-; ;___|___________________"
"\n____/______/______/___|o;._ ' ''.o|o_.--' ;o;____/______/______/____"
"\n/______/______/______/_'=._o--._ ; | ; ; ;/______/______/______/_"
"\n____/______/______/______/__'=._o--._ ;o|o; _._;o;____/______/______/____"
"\n/______/______/______/______/____'=._o._; | ;_.--'o.--'_/______/______/______/_"
"\n____/______/______/______/______/_____'=.o|o_.--''___/______/______/______/____"
"\n/______/______/______/______/______/______/______/______/______/______/_______/"
"\n*******************************************************************************";
break;
}
}
if(num_of_wrong_guesses == MAX_TRIES)
{
cout << "\nSorry, you lose...you've been hanged." << endl<<endl;
cout<<
"\n (/)"
"\n (/)"
"\n (/)"
"\n (/)"
"\n (/)"
"\n (/)"
"\n (/))"
"\n (/)(/)"
"\n (/)''(/)"
"\n (/) (/)"
"\n (/) (/)"
"\n (/) (/)"
"\n (/) (/)"
"\n (/) (/)"
"\n (/) (/)"
"\n (/)";
cout << "\nThe word was : " << word << endl;
}
getch();
return 0;
}
/* Take a one character guess and the secret word, and fill in the
unfinished guessword. Returns number of characters matched.
Also, returns zero if the character is already guessed. */
int letterFill (char guess, char secretword[], char guessword[])
{
int i;
int matches=0;
for (i = 0; secretword[i]!='\0'; i++)
{
// Did we already match this letter in a previous guess?
if (guess == guessword[i])
return 0;
// Is the guess in the secret word?
if (guess == secretword[i])
{
guessword[i] = guess;
matches++;
}
}
return matches;
}
// Initialize the unknown word
void initUnknown (char word[], char unknown[])
{
int i;
int length = strlen(word);
for (i = 0; i < length; i++)
unknown[i]='*';
unknown[i]='\0';
}
Aucun commentaire:
Enregistrer un commentaire