uva489Hangman Judge

来源:互联网 发布:记忆最佳时间段在 知乎 编辑:程序博客网 时间:2024/06/01 20:47

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 1010char 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;}


0 0
原创粉丝点击