UVa 489 -- Hangman Judge

Hangman Judge

Hangman Judge是一个猜英文单字的小游戏(在电子字典中常会看到),游戏规则如下:
1、答案单字写在纸上(每个字元一张纸),并且被盖起来,玩家每次猜一个英文字元(letter)。
2、如果这个英文字元猜中(在答案的英文单字中有出现),被猜中的字元就被翻开。例如:答案是book,如果你猜o,book中的两个o就会被视为已猜中。
3、如果这个英文字元未出现在答案的单字中,就会在hangman的图中多加一划。要完成hangman图共需7划,如下图。注意:同一个猜错的字元只能再图上画一划,例如:答案是book,第一次你猜a(未猜中)会在图上画一划,但第二次以后再猜a并不会再多画。
4、如果在hangman图完成之前,玩家已猜中所有答案中的字元,则玩家赢(win)。
5、如果玩家尚未猜中所有答案中的字元而hangman图完成了,,则玩家输(lose)。
6、如果玩家在还没输赢的情况之下就不玩了,那我们说玩家胆小放弃了(chicken out)

 ______   
   |  |     
   |  O     
   | /|    
   |  |     
   | /     
 __|_       
 |   |______
 |_________|

 

你的任务就是要写一个程序根据答案及玩家输入的猜测来判断玩家是赢、输、或放弃。

【输入】

会有好几组测试数据,每一组有3列。第一列为一个数字n,代表第几回合,第二列为这一回合的答案,第三列为这一回合玩家输入的猜测。如果n = -1代表输入结束。

【输出】

请输出每一回合及游戏结果。游戏结果只有三种可能:
You win.
You lose.
You chickened out.
请参考样例输出。

【样例输入】

1
cheese
chese
2
cheese
abcdefg
3
cheese
abcdefgij
-1

【样例输出】
Round 1
You win.
Round 2
You chickened out.
Round 3
You lose.

 1 #include<iostream>
 2 #include<string.h>
 3 using namespace std;
 4 int main()
 5 {
 6     int Round;
 7     char word[27];
 8     string s1,s2;
 9     cin>>Round;
10     while(Round != -1)
11     {
12         memset(word,0,sizeof(word));
13         cin>>s1>>s2;
14         int totalWord=0;//记录不同字母的个数
15         for(int i=0;i<s1.length();i++)
16         {
17             if(word[s1[i]-'a'] == 0)
18             {
19                 totalWord++;
20             }
21             word[s1[i]-'a']++;
22         }
23         int wrong = 0;//错误的次数
24         int gusseWord = 0;//正确的单词数
25         for(int j=0;j<s2.length();j++)
26         {
27             if(word[s2[j]-'a'] == 0)
28             {
29                 wrong++;
30                 if(wrong >= 7)
31                     break;
32             }else{
33                 word[s2[j]-'a'] = 0;//已经猜过的不能在猜,所以将其置0,下一次再猜会记为错误
34                 gusseWord++;//正确猜对的字母数++
35                 if(gusseWord  == totalWord)
36                     break;
37             }
38         }
39         ///进行结果输出
40         cout<<"Round "<<Round<<endl;
41         if(gusseWord<totalWord && wrong >= 7)
42         {
43             cout<<"You lose."<<endl;
44         }else{
45             if(gusseWord == totalWord && wrong < 7)
46                 cout<<"You win."<<endl;
47             else
48                 cout<<"You chickened out."<<endl;
49         }
50 
51         cin>>Round;
52     }
53     return 0;
54 }

 
原文地址:https://www.cnblogs.com/yxh-amysear/p/8410643.html