UVa489刽子手游戏

  游戏规则,计算机想一个单词让你猜,你每次可以猜一个字母,如果单词里有那个字
  母,所有该字母都会显示出来,如果没有那个字母,则计算机会在一副“刽子手”画上填一笔,
  这幅画一共需要7笔就能完成,因此你最多只能错6次。注意猜一个已经猜过的字母也算错。
  
  在本题中,你的任务是编写一个“裁判”程序,输入单词和玩家的猜测,判断玩家赢了,(You win.)、
  输了(You lose.)、还是放弃了(You give up.)每组包含3行,第一行是游戏编号(-1为输入结束标记),
  第2行是计算机想的单词,第3行是玩家的猜测。后两行保证只含小写字母
 #include<cstdio>
#include<cstring>
#define N 100
int left,chance;//left表示需要猜的位置,通过检测状态判断;chance表示错误的次数
char s[N],s2[N];
int win,lose;
//定义检测函数 
 void guess(char ch)
{
	int flase=1;
	for(int i=0;i<strlen(s);i++)
	{
		if(s[i]==ch)
		{
			left--;s[i]=' ';flase=0;
		}
		if(flase) chance--;
		if(!chance) lose=1;
		if(!left) win=1;
	}
 } 
 
 int main()
 {
 	int rnd;//输入游戏编号
	while(scanf("%d%s%s",&rnd,s,s2)==3&&rnd!=-1) //rnd=-1时游戏结束 
	{
		printf("Round %d\n",rnd);
		win=lose=0;
		left=strlen(s);
		chance=7;
		for(int i=0;i<strlen(s2);i++)
		{
			guess(s2[i]);//输入第一个字母开始检测
			if(win||lose) break; 

		}	
		if(win) printf("You win.\n");
		else if(lose) printf("You lose.\n");
		else printf("You checked out.\n");
		//根据结果进行输出 
	}
	return 0;
 }

猜你喜欢

转载自blog.csdn.net/qq_41879767/article/details/82821772