大意:
电脑想个单词,玩家来猜。
玩家输入一个个字母,若答案里有这个字母,则显示该单词中所有该字母。
最终目标是显示答案所有字母。
猜错7次,死;


注意特殊条件:
1.玩家不断重复错误的字母,只算一次猜错。
2.如果答案是ans,读入了ansjklzxcv,这种情况算win的。虽然后面错误了7次,但游戏已经在猜出ans时提前结束了。。。

#include<iostream> 
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;

const int maxalp=26;
const int maxl=100;
bool unguessed[maxalp];
bool alreadygussedwrong[maxalp];
int cnt;
char ans[maxl],guess[maxl];
int rnd;
int la,lg;
int ungcnt;
bool lose=false;
bool chickenedout=false;
bool insguess=false;
int main()
{
    while(scanf("%d",&rnd))
    {
        if(rnd==-1)break;
        memset(unguessed,false,sizeof(unguessed));
        memset(alreadygussedwrong,false,sizeof(alreadygussedwrong));
        memset(ans,0,sizeof(ans));
        memset(guess,0,sizeof(guess));
        cnt=0;
        lose=false;
        chickenedout=false;
        insguess=false;
        ungcnt=0;    
        
        printf("Round %d\n",rnd);
        scanf("%s%s",ans,guess);
        la=strlen(ans);
        lg=strlen(guess);
        for(int i=0;i<la;i++)
        if(!unguessed[ans[i]-'a'])
        {
            unguessed[ans[i]-'a']=true;
            ungcnt++;
        }
        for(int i=0;i<lg;i++)
        {
            int ch=guess[i]-'a';
            if(unguessed[ch])
            {
                unguessed[ch]=false;
                ungcnt--;
            }
            else if(!alreadygussedwrong[ch])
            {
                cnt++;
                alreadygussedwrong[ch]=true;
            }
            if(!ungcnt)
            {
                printf("You win.\n");
                insguess=true;
                break;
            }  
            if(cnt==7)
            {
                printf("You lose.\n");
                lose=true;
                break;
            }
        }
        if(!lose&&!insguess)
            for(int i=0;i<maxalp;i++)
                if(unguessed[i])
                {
                    printf("You chickened out.\n");
                    chickenedout=true;
                    break;
                }
        if(!lose&&!chickenedout&&!insguess)
            printf("You win.\n");
    }

    return 0;
}

 

 posted on 2016-08-30 21:48  cylcy  阅读(221)  评论(0编辑  收藏  举报