7-6 简易连连看

7-6 简易连连看

题目描述:

本题要求实现一个简易连连看游戏模拟程序。
给定一个2N×2N的方阵网格游戏盘面,每个格子中放置一些符号。这些符号一定是成对出现的,同一个符号可能不止一对。程序读入玩家给出的一对位置(x​1​​ ,y​1​​ )、(x​2 ,y​2​​ ),判断这两个位置上的符号是否匹配。如果匹配成功,则将两个符号消为“*”并输出消去后的盘面;否则输出“Uh-oh”。若匹配错误达到3次,则输出“Game Over”并结束游戏。或者当全部符号匹配成功,则输出“Congratulations!”,然后结束游戏。

输入格式:

输入在一行中给一个正整数N(<5)。随后2N行,每行2N个大写英文字母(其间以1个空格分隔),表示游戏盘面。盘面之后给出一个正整数K,随后K行,每行按照格式“x​1 y​1 x​2​​ y​2”给出一个玩家的输入。注意格子的行、列编号是从1到2N。

输出格式:

根据玩家的每一步输入,输出相应的结果。输出盘面时注意,每行字符间以1个空格分隔,行末不得有多余空格。

输入样例:

样例1

输出样例:

样例1

输入样例:

样例二

样例二

思路分析:

这道题并没有考什么算法与规律,只有字符串输入与字符串输出的问题,在考场A题的时候,没A出来,在考场外,尝试重新A,A出与样例一样,如果有错误或者建议,请大佬评论给一下,谢谢,废话不多说,直接上代码。

	#include<stdio.h>
	int main()
	{
		int a,b,c,x1,y1,x2,y2,x,y,m;
		char c1[10][50],c2[10][50];
		scanf("%d",&a);
        m=a*a*4;
		getchar();
		for(b=1;b<=2*a;b++)
		{
			gets(c1[b]);
	}
		for(b=1;b<=2*a;b++)
		{
			int d=1;
			for(c=0;c1[b][c]!='\0';c++)
			{
				if(c1[b][c]!=' ' && c1[b][c]!='\0')
				{
					c2[b][d]=c1[b][c];
					d++;
				}
			}
	}
	int d=0;
		scanf("%d",&y);
		for(x=0;x<y;x++)
		{
			if(d==3)
			{
				printf("Game Over\n");
			}
			scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
			if(c2[x1][y1]==c2[x2][y2] && c2[x1][y1]!='*' && c2[x1][y1]!='*')
			{
				c2[x1][y1]='*';
				c2[x2][y2]='*';
                m-=2;
				if(m!=0 && d!=3)
				{
					for(b=1;b<=2*a;b++)
		{
			for(c=1;c<=2*a;c++)
			{
				if(c!=2*a)
			printf("%c ",c2[b][c]);
			else
			printf("%c",c2[b][c]);
		}
		printf("\n");
	}
	}
			}
			else if(m!=0 && c2[x1][y1]!=c2[x2][y2])
			{
				d++;
				printf("Uh-oh\n");
			}
			else if(c2[x1][y1]=='*' && c2[x2][y2]=='*' && m!=0)
			{
			d++;
				printf("Uh-oh\n");
			}
		}
		if(m==0)
		{
			printf("Congratulations!");
		}
		return 0;
			}
发布了7 篇原创文章 · 获赞 3 · 访问量 181

猜你喜欢

转载自blog.csdn.net/xiaosuC/article/details/103929940
7-6