angman Judge是一个猜英文单字的小游戏(在电子字典中常会看到),游戏规则如下:
1.答案单字写在纸上(每个字符一张纸),并且被盖起来,玩家每次猜一个英文字符(letter)。
2.如果这个英文字符猜中(在答案的英文单字中有出现),被猜中的字符就被翻开。例如:答案是book,如果你猜o,book中的两个o就会被视为已猜中。
3.如果这个英文字符未出现在答案的单字中,就会在hangman的图中多加一划。要完成hangman图共需7划,如下图。注意:同一个猜错的字符只能再图上画一划,例如:答案是book,第一次你猜a(未猜中)会在图上画一划,但第二次以后再猜a并不会再多画。
4.如果在hangman图完成之前,玩家已猜中所有答案中的字符,则玩家赢(win)。
5.如果玩家尚未猜中所有答案中的字符而hangman图完成了,,则玩家输(lose)。
6.如果玩家在还没输赢的情况之下就不玩了,那我们说玩家胆小放弃了(chicken out).
下面是我的代码:
#include <stdio.h>
#include <string.h>
#define MAXN 1010
char s[MAXN], t[MAXN];
int win, lose, chance, left, lens, lent;
void guess(char c)
{
int bad, i;
bad = 1;
for(i=0; i<lens; i++)
if(s[i] == c)
{
left--;
if(left == 0)
{
win = 1;
return;
}
s[i] = '\0';
bad = 0;
}
if(bad==1)
{
chance--;
if(chance==0)
lose=1;
}
}
int main(void)
{
int n, i;
while(scanf("%d%s%s", &n, s, t) != EOF)
{
if(n==-1)
break;
left = lens = strlen(s);
lent = strlen(t);
win = lose = 0;
chance = 7;
for(i=0; i<lent; i++)
{
guess(t[i]);
if(win || lose)
break;
}
printf("Round %d\n",n);
if(win==1)
printf("You win.\n");
else if(lose==1)
printf("You lose.\n");
else
printf("You chickened out.\n");
}
return 0;
}