random string for asterik masking error help?

hello everybody i was create a hangman game with string and random to every i run the program but retry point and asterik no t worki please help!!!!. i was desperate right now


#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <string>

using namespace std;
int main(){
int i=0;
string word;
string asterik(word.length(),'*');
string word_word[] =
{
"india",
"japan",
"nepal",
"china",
"madagascar",
"azerbaijan",
"kyrgyzstan",
"turkmenistan",
"french guiana",
"new caledonia"
};
/*ar asterik[]={'*'};*/
if (asterik==word);
char you_guess=' ';
int fals=0;
int chance=3;
int win=0;

while(fals<=3){

if(fals==3){
chance=0;
break;
}

int total_asterik=0;
int n=rand()% 10;
word=word_word[n];


puts ("*****************WELCOME TO GAME HANGMAN********************");
puts ("__________________________________________________________\n");
puts ("| Rule : you just guess the letters that marked |");
puts ("| *, and you choose three chances to guess the letters |");
puts ("__________________________________________________________\n");

printf ("Please Guess the word Here :\n");
for(i=0;i<10;i++){
printf("%c",word[i]);
}

printf("\tchance : %i",chance);
printf("\n\n");

int same=0;

printf("Enter your guess : ");

for(i=0;i<10;i++){
if(word[i]=='*'){
total_asterik++;
}
}

if (word==asterik){
printf("\n\nCONGRATULATION!! YOU WON!!");
break;
}

scanf("%c",&you_guess);
fflush(stdin);

for(i=0;i<12;i++){
if(word[i]==you_guess){
word[i]=you_guess;
same++;
}
}

if(same==0){
fals++;
chance--;
}

if (fals==3){
printf("\nSORRY, YOU'RE LOSER!!!");
break;
}
}
}
string 'word' doesn't have a value when you use the length() to initialize 'asterik.'

1
2
string word; // empty
string asterik(word.length(),'*'); // word.length() == 0 

You are loading stdio.h from c and iostream from c++ . Stdlib from c and cstdlib from c++ what are you trying to do ?
Also which compiler are you using because conio is not even used nowadays and I am pretty sure we only need to include one of string or string.h not both of them.
Last edited on
ok do you meant like this

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <conio.h>
#include <ctime>
#include <stdlib.h>
#include <stdio.h>
#include <string>

using namespace std;
int main(){
int i=0;

string asterik(word.length() == 0);
string word[] =
{
"india",
"japan",
"nepal",
"china",
"madagascar",
"azerbaijan",
"kyrgyzstan",
"turkmenistan",
"french guiana",
"new caledonia"
};
/*ar asterik[]={'*'};*/
if (asterik==word);
char you_guess=' ';
int fals=0;
int chance=3;
int win=0;

while(fals<=3){

if(fals==3){
chance=0;
break;
}

int total_asterik=0;
int n=rand()% 10;
word[n];


puts ("*****************WELCOME TO GAME HANGMAN********************");
puts ("__________________________________________________________\n");
puts ("|      Rule : you just guess the letters that marked       |");
puts ("| *, and you choose three chances to guess the letters    |");
puts ("__________________________________________________________\n");

printf ("Please Guess the word Here :\n");
for(i=0;i<10;i++){
printf("%c",word[i]);
}

printf("\tchance : %i",chance);
printf("\n\n");

int same=0;

printf("Enter your guess : ");

for(i=0;i<10;i++){
if(word[i]=='*'){
total_asterik++;
}
}

if (word==asterik){
printf("\n\nCONGRATULATION!! YOU WON!!");
break;
}

scanf("%c",&you_guess);
fflush(stdin);

for(i=0;i<12;i++){
if(word[i]==you_guess){
word[i]=you_guess;
same++;
}
}

if(same==0){
fals++;
chance--;
}

if (fals==3){
printf("\nSORRY, YOU'RE LOSER!!!");
break;
}
}
}



there are still error when i remove

1
2
string word;
string asterik(word.length(),'*');


this is my log
line 11 error: 'word' was not declared in this scope

Last edited on
Can you clarify that which language are you using C or C++ and which compiler are you using if you are using c++ .
ok,fine i want to use c++.can you give me source code for me
and i use minGW compiler for code blocks
Last edited on
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
using namespace std;
const int MAX_TRIES=5;
int letterFill (char, string, string&);
int main ()
{
string name;
char letter;
int num_of_wrong_guesses=0;
string word;
string words[] =
{
"india",
"pakistan",
"nepal",
"malaysia",
"philippines",
"australia",
"iran",
"ethiopia",
"oman",
"indonesia"
};
//choose and copy a word from array of words randomly
srand(time(NULL));
int n=rand()% 10;
word=words[n];
// Initialize the secret word with the * character.
string unknown(word.length(),'*');
// welcome the user
cout << "\n\nWelcome to hangman...Guess 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 user guessed the word.
if (word==unknown)
{
cout << word << endl;
cout << "Yeah! You got it!";
break;
}
}
if(num_of_wrong_guesses == MAX_TRIES)
{
cout << "\nSorry, you lose...you've been hanged." << endl;
cout << "The word was : " << word << endl;
}
cin.ignore();
cin.get();
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, string secretword, string &guessword)
{
int i;
int matches=0;
int len=secretword.length();
for (i = 0; i< len; 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;
}
where is asterisk code i can't found it in your source code
Why do you want to use arterisk or whatever it is I gave you an example of a simple hangman game made in c++.
Topic archived. No new replies allowed.