问题
本题要求实现一个简易连连看游戏模拟程序。
给定一个2N×2N的方阵网格游戏盘面,每个格子中放置一些符号。这些符号一定是成对出现的,同一个符号可能不止一对。程序读入玩家给出的一对位置(x1,y1)、(x2,y2),判断这两个位置上的符号是否匹配。如果匹配成功,则将两个符号消为“*”并输出消去后的盘面;否则输出“Uh-oh”。若匹配错误达到3次,则输出“Game Over”并结束游戏。或者当全部符号匹配成功,则输出“Congratulations!”,然后结束游戏。
输入格式:
输入在一行中给一个正整数N(<5)。随后2N行,每行2N个大写英文字母(其间以1个空格分隔),表示游戏盘面。盘面之后给出一个正整数K,随后K行,每行按照格式“x1 y1 x2 y2”给出一个玩家的输入。注意格子的行、列编号是从1到2N。
输出格式:
根据玩家的每一步输入,输出相应的结果。输出盘面时注意,每行字符间以1个空格分隔,行末不得有多余空格。
输入样例1:2I T I TY T I AT A T YI K K T111 1 1 34 2 4 33 1 4 22 2 1 23 1 2 44 4 3 12 1 3 43 3 1 44 1 2 32 4 3 21 1 2 2输出样例1:* T * TY T I AT A T YI K K T* T * TY T I AT A T YI * * TUh-oh* * * TY * I AT A T YI * * TUh-oh* * * TY * I A* A T YI * * ** * * T* * I A* A T *I * * ** * * ** * I A* A * *I * * ** * * ** * * A* A * ** * * *Congratulations!
我想一步步来 现在刚刚编到输入两个坐标,输出替换后的方阵那里,以下是我的代码:
#include<stdio.h>
int main()
{
intn1,n2,i1,j1,i2,j2;
chara1[10][10];
intnb[100][4];
scanf("%d",&n1);
for(i1=0;i1<2*n1;i1++)
{
for(j1=0;j1<2*n1;j1++)
scanf("%c",&a1[i1][j1]);
}
scanf("%d",&n2);
for(i2=0;i2<n2;i2++)
{
scanf("%d%d %d %d",&nb[i2][0],&nb[i2][1],&nb[i2][2],&nb[i2][3]);
if(a1[nb[i2][0]][nb[i2][1]]==a1[nb[i2][2]][nb[i2][3]])
{
a1[nb[i2][0]][nb[i2][1]]='*';
a1[nb[i2][2]][nb[i2][3]]='*';
}
for(i1=0;i1<2*n1;i1++)
{
for(j1=0;j1<2*n1;j1++)
printf("%c",a1[i1][j1]);
printf("\n");
}
}
return 0;
}
运行的时候发现方阵里相同的元素不会被’*‘替代,输出的方阵跟输入的方阵完全一样,求大佬指出哪里有错误?是二维数组的下标不能嵌套吗?
本题要求实现一个简易连连看游戏模拟程序。
给定一个2N×2N的方阵网格游戏盘面,每个格子中放置一些符号。这些符号一定是成对出现的,同一个符号可能不止一对。程序读入玩家给出的一对位置(x1,y1)、(x2,y2),判断这两个位置上的符号是否匹配。如果匹配成功,则将两个符号消为“*”并输出消去后的盘面;否则输出“Uh-oh”。若匹配错误达到3次,则输出“Game Over”并结束游戏。或者当全部符号匹配成功,则输出“Congratulations!”,然后结束游戏。
输入格式:
输入在一行中给一个正整数N(<5)。随后2N行,每行2N个大写英文字母(其间以1个空格分隔),表示游戏盘面。盘面之后给出一个正整数K,随后K行,每行按照格式“x1 y1 x2 y2”给出一个玩家的输入。注意格子的行、列编号是从1到2N。
输出格式:
根据玩家的每一步输入,输出相应的结果。输出盘面时注意,每行字符间以1个空格分隔,行末不得有多余空格。
输入样例1:2I T I TY T I AT A T YI K K T111 1 1 34 2 4 33 1 4 22 2 1 23 1 2 44 4 3 12 1 3 43 3 1 44 1 2 32 4 3 21 1 2 2输出样例1:* T * TY T I AT A T YI K K T* T * TY T I AT A T YI * * TUh-oh* * * TY * I AT A T YI * * TUh-oh* * * TY * I A* A T YI * * ** * * T* * I A* A T *I * * ** * * ** * I A* A * *I * * ** * * ** * * A* A * ** * * *Congratulations!
我想一步步来 现在刚刚编到输入两个坐标,输出替换后的方阵那里,以下是我的代码:
#include<stdio.h>
int main()
{
intn1,n2,i1,j1,i2,j2;
chara1[10][10];
intnb[100][4];
scanf("%d",&n1);
for(i1=0;i1<2*n1;i1++)
{
for(j1=0;j1<2*n1;j1++)
scanf("%c",&a1[i1][j1]);
}
scanf("%d",&n2);
for(i2=0;i2<n2;i2++)
{
scanf("%d%d %d %d",&nb[i2][0],&nb[i2][1],&nb[i2][2],&nb[i2][3]);
if(a1[nb[i2][0]][nb[i2][1]]==a1[nb[i2][2]][nb[i2][3]])
{
a1[nb[i2][0]][nb[i2][1]]='*';
a1[nb[i2][2]][nb[i2][3]]='*';
}
for(i1=0;i1<2*n1;i1++)
{
for(j1=0;j1<2*n1;j1++)
printf("%c",a1[i1][j1]);
printf("\n");
}
}
return 0;
}
运行的时候发现方阵里相同的元素不会被’*‘替代,输出的方阵跟输入的方阵完全一样,求大佬指出哪里有错误?是二维数组的下标不能嵌套吗?