刽子手游戏(hang man,uva 489)

                        ~~刽子手游戏~~

题目:游戏规则是这样的:计算机想一个单词让你猜,你每次可以猜一个字母。 如果单词里有那个字母,所有该字母会显示出来;如果没有那个字母,则计算机会在一幅“刽子手”画上填一笔。 这幅画一共需要7笔就能完成,因此你最多只能错6次。 注意,猜一个已经猜过的字母也算错。
在本题中,你的任务是编写一个“裁判”程序,输入单词和玩家的猜测,判断玩家赢了(You win.)、 输了(You lose.)还是放弃了(You chickened out.)。 每组数据包含3行,第1行是游戏编号(-1为输入结束标记),第2行是计算机想的单词,第3行是玩家的猜测。 后两行保证只含小写字母。
样例输入:
1
cheese
chese
2cheese
abcdefg
3 c
heese
abcdefgij
-1
样例输出:
Round 1
You win.
Round 2
You chickened out.
Round 3
You lose.

#include<stdio.h>
#include<string.h>
int left,chance=7,win=0,lose=0;  //chance 表示错误次数 left剩余次数 

int judge(char a[],char b,int n){
	char *p=a;
	int zz=0;
	for(;p<a+n;p++){
		if(*p==b) {
			left--;
			*p=' ';   //变空就不会重复 
			zz=1;
			
		}
	}
	if(!zz) {
		chance--;
	} 
	if (!chance) lose=1;
	if(!left) win=1;
}
int main(){
	int rnd;	
	char a[10],b[20];
	while(scanf("%d%s%s",&rnd,a,b)==3 && rnd != -1){
		win=0;lose=0;
		left=strlen(a);
		chance=7;
		printf("Round %d\n",rnd);
		for(int i=0;i<strlen(b);i++){
			judge(a,b[i],strlen(a));
			if (win || lose) break;   //这个很重要 
		} 
		if (win) printf("you win\n");    //这里也可以欣赏一下 
		else 
			if(lose) printf("you lose\n");
			else printf("you chickened out\n");
			 
	}
	return 0;
	
}
发布了27 篇原创文章 · 获赞 1 · 访问量 1673

猜你喜欢

转载自blog.csdn.net/qq_37959151/article/details/84669660