首页 > 代码库 > uva 489 Hangman Judge
uva 489 Hangman Judge
大意:
电脑想个单词,玩家来猜。
玩家输入一个个字母,若答案里有这个字母,则显示该单词中所有该字母。
最终目标是显示答案所有字母。
猜错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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。