# Đề tài: [ Solved ]Hỏi về game HangMan

1. Awaiting Email Confirmation
Ngày gia nhập
09 2008
Bài viết
16

## [ Solved ]Hỏi về game HangMan

Code:
```#include <iostream>
using namespace std;
#include <string>
#include <cctype>
void DrawGallows(int );
int main()
{
char solution[20];	//holds solution
char blank[20];		//holds "*"'s for unsolved letters
int counter = 0;	//general-use counter
int right = 0;		//1 = right guess, 0 = wrong guess.
char guess;

cout<<"Enter phrase 20 chars or less."<<endl;
cin.getline(solution, 20);
int puzzLength = strlen(solution);		//finds lengtrh of puzzle, stores INT value to puzzlength

//convert puzzle to full uppercase
for (counter = 0; counter < puzzLength; counter++){
solution[counter] = toupper(solution[counter]);
}
//done converting

strcpy(blank, solution);				//copy solution to the 'blank' array

for (counter = 0; counter < puzzLength; counter++) {		//converts characters to *'s to represent blanks

if (isalnum(solution[counter])) blank[counter] = '*';
else blank[counter] = solution[counter];

}	//closes for loop

while (solution != blank) { //play game until the 'blank' puzzle becomes the 'right' answer

cout<<"The current 'blank' puzzle is: "<<blank<<"."<<endl;
cout<<"Enter a guess."<<endl;
cin>>guess;
guess = toupper(guess);

//cbeck guess!
int State =1;
for (counter = 0; counter <= puzzLength; counter++) {

if (guess == solution[counter]) {
blank[counter] = guess;		//fill in the puzzle with the letter

}
if (guess != solution[counter])
{
State++;
DrawGallows(State);
}
}		//close loop, done checking guess

}	//game is over.

cout<<"Winner!";
cin.get();
return 0;
}
void DrawGallows(int State)
{
if(State==6)
{
// The \\ will translate as '\' because it is a special char
cout<<endl<<endl
<<"   +----+     "<<endl
<<"   |    |     "<<endl
<<"   |    O     "<<endl
<<"   |   /|\\   "<<endl
<<"   |   / \\   "<<endl
<<"  ============"<<endl<<endl;
}
else if(State==5)
{
cout<<endl<<endl
<<"   +----+  "<<endl
<<"   |    |  "<<endl
<<"   |    O  "<<endl
<<"   |   /|\\ "<<endl
<<"   |     \\ "<<endl
<<"   |       "<<endl
<<"  ============"<<endl<<endl;
}
else if(State==4)
{
cout<<endl<<endl
<<"   +----+  "<<endl
<<"   |    |  "<<endl
<<"   |    O  "<<endl
<<"   |   /|\\ "<<endl
<<"   |       "<<endl
<<"   |       "<<endl
<<"  ============="<<endl<<endl;
}
else if(State==3)
{
cout<<endl<<endl
<<"   +----+  "<<endl
<<"   |    |  "<<endl
<<"   |    O  "<<endl
<<"   |   /|  "<<endl
<<"   |       "<<endl
<<"   |       "<<endl
<<"  ============="<<endl<<endl;
}
else if(State==2)
{
cout<<endl<<endl
<<"   +----+  "<<endl
<<"   |    |  "<<endl
<<"   |    O  "<<endl
<<"   |    |  "<<endl
<<"   |       "<<endl
<<"   |       "<<endl
<<"  ============="<<endl<<endl;
}
else if(State==1)
{
cout<<endl<<endl
<<"   +----+  "<<endl
<<"   |    |  "<<endl
<<"   |       "<<endl
<<"   |       "<<endl
<<"   |       "<<endl
<<"   |       "<<endl
<<"  ============="<<endl<<endl;
}
}```
mình không hiểu tại sao thay vì nó làm 1 trường hợp vẽ hình thôi, đàng này nó quất nguyên cả dãy chạy luôn, cám ơn

2. Thành viên nhiệt tình
Ngày gia nhập
04 2008
Bài viết
336
Code:
```for (counter = 0; counter <= puzzLength; counter++) {

if (guess == solution[counter]) {
blank[counter] = guess;		//fill in the puzzle with the letter

}
if (guess != solution[counter])
{
State++;
DrawGallows(State);
}
}		//close loop, done checking guess

}	//game is over.```
cậu thêm break; vào là được, cần phải thoát khỏi for khi gặp 1 trường hợp sai

#### Quyền hạn của bạn

• Bạn không thể gửi đề tài mới
• Bạn không thể gửi bài trả lời
• Bạn không thể gửi các đính kèm
• Bạn không thể chỉnh sửa bài viết của bạn