/*
刽子手游戏(Hang man Judge, UVa 489)
一款猜单词游戏:计算机想一个单词让你猜,你每次可以猜一个字母。
如果单词没有那个字母,记错一次,只能错6次。
注意:猜一个已经猜过的字母也算错
本题中,你的任务是担任"裁判"程序,输入单词和玩家的猜测,判断玩家赢了(You win.)、输了(You lose.) 、还是放弃了(You chickened out.)。
每组数据包含3行,第一行是游戏编号(-1为输入结束标记),第二行是计算机想的单词,第三行是玩家的猜测。
后两行保证只含小写字母。
样例输入:
1
cheese
chese
2
cheese
abcdefg
3
cheese
abcdefghij
-1
样例输出:
Round 1
You win.
Round 2
You chickened out.
Round 3
You lose.
*/
#include<stdio.h>
#include<string.h>
#define maxn 100
char s1[maxn], s2[maxn];
int left, chance; // 还需要猜 left 个位置 ,还有 chance 次机会
int win, lose; // win=1表示赢了 lose=1表示输了
void guess(char m)
{
int result;
for(int i = 0; i < strlen(s1); i++ ) {
if(m == s1[i]) {
left--;
s1[i] = ' ';
result = 0;
}
}
if(result) --chance;
if(!chance) lose = 1;
if(!left) win = 1;
}
int main()
{
int rnd; // 回合数
while(scanf("%d%s%s", &rnd, s1, s2) == 3 && rnd != -1) {
printf("Round %d\n", rnd);
win = lose = 0; // 每一组都要初始化
left = strlen(s1);
chance = 7; // 可以错6次,共有七次机会 第七次错了便是输了
for(int i = 0; i <= strlen(s2); i++) {
guess(s2[i]); //猜一个字母
if( win || lose ) //检查状态
break;
}
if(win) printf("You win.\n");
else if(lose) printf("You lose.\n");
else printf("You chickened out.\n");
printf("\n");
}
return 0;
}