wordpress网站换主机泉州seo报价
7-2-10 简易连连看
重新整理思路,写的代码多点,思路清晰点。
**题目要求**
本题要求实现一个简易连连看游戏模拟程序。
给定一个2N×2N的方阵网格游戏盘面,每个格子中放置一些符号。
这些符号一定是成对出现的,同一个符号可能不止一对。
程序读入玩家给出的一对位置(x1,y1),(x2,y2)判断这两个位置上的符号是否匹配。
如果匹配成功,则将两个符号消为“*”并输出消去后的盘面;
否则输出“Uh-oh”。若匹配错误达到3次,则输出“Game Over”并结束游戏。
或者当全部符号匹配成功,则输出“Congratulations!”,然后结束游戏。
整理题目条件
- 输入在一行中给一个正整数N,形成一个2N×2N的方阵网格游戏盘面。符号成对出现。
- 循环k次读入玩家给出的一对位置(x1,y1),(x2,y2)。
- 给出两对位置上的字符匹配成功,则将两个符号消为 “*” 并输出消去后的盘面。
- 匹配失败输出“Uh-oh”。若匹配错误达到3次,则输出“Game Over”并结束游戏。
- 全部符号匹配成功,则输出“Congratulations!”,然后结束游戏。
#include<stdio.h>
int col;//值为(2*n)方便使用
//打印盘面函数
void pr(char a[][col]){for(int i=0;i<col;i++){for(int j=0;j<col;j++){//行末不能有多余的空格if(j == col-1){printf("%c",a[i][j]);}else{printf("%c ",a[i][j]);}}printf("\n");}
}
int main(){//输入值int n;scanf("%d",&n);col=n*2;char ch,a[col][col];ch=getchar();for(int i=0;i<col;i++){for(int j=0;j<col;j++){scanf("%c ",&a[i][j]);}}int k;scanf("%d",&k);//count记录错误次数,right记录正确次数,flag判断是否完全匹配。int count=0,right=0,flag=1;for(int i=0;i<k;i++){int x1,y1,x2,y2;scanf("%d %d %d %d",&x1,&y1,&x2,&y2);//下标与输入值相差一,故减一。同时,匹配成功变为*不在重复记录。if(a[x1-1][y1-1] == a[x2-1][y2-1] && a[x1-1][y1-1] !='*'){a[x1-1][y1-1] = a[x2-1][y2-1]='*';//正确次数加一right++;//最多匹配 (col*col)/2次,例col=4,最多匹配8次即可全部匹配成功。if(right == (col*col)/2){break;}//每次成功消除后打印盘面。pr(a);}else{//匹配失败printf("Uh-oh\n");//失败次数加一count++;//达到三次if(count == 3){printf("Game Over\n");//没有完全匹配flag=0;break;}}}//重新检查是否完全匹配,如k < 全部成功匹配所需次数,就提前退出,没有完全匹配。for(int i=0;i<col;i++){for(int j=0;j<col;j++){if(a[i][j] != '*'){//没有完全匹配flag=0;}}}//是否完全匹配,是:那就祝贺你成功!否:下次加油哥们!if(flag){printf("Congratulations!");}return 0;
}
模拟思路写的,可能写的不是很简洁。可供参考。