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;
			}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
7-7 简易连连看 (15分) 本题要求实现一个简易连连看游戏模拟程序。 给定一个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: 2 I T I T Y T I A T A T Y I K K T 11 1 1 1 3 4 2 4 3 3 1 4 2 2 2 1 2 3 1 2 4 4 4 3 1 2 1 3 4 3 3 1 4 4 1 2 3 2 4 3 2 1 1 2 2 输出样例1: * T * T Y T I A T A T Y I K K T * T * T Y T I A T A T Y I * * T Uh-oh * * * T Y * I A T A T Y I * * T Uh-oh * * * T Y * I A * A T Y I * * * * * * T * * I A * A T * I * * * * * * * * * I A * A * * I * * * * * * * * * * A * A * * * * * * Congratulations! 输入样例2: 2 I T I T Y T I A T A T Y I K K T 5 1 1 4 4 1 1 2 3 1 1 2 3 2 2 4 1 2 2 3 3 输出样例2: Uh-oh * T I T Y T * A T A T Y I K K T Uh-oh Uh-oh Game Over
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值