码迷,mamicode.com
首页 > 其他好文 > 详细

uva 489 Hangman Judge

时间:2016-08-30 22:41:41      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:

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

 

uva 489 Hangman Judge

标签:

原文地址:http://www.cnblogs.com/liucongyu/p/5823759.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!