• 数组-12. 简易连连看(20)


    本题要求实现一个简易连连看游戏模拟程序。

    给定一个2Nx2N的方阵网格游戏盘面,每个格子中放置一些符号。这些符号一定是成对出现的,同一个符号可能不止一对。程序读入玩家给出的一对位置(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:

    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
    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    #include <string.h>
    #include <stdlib.h>
    
    using namespace::std; 
    
    int main(){
          int n;
          scanf("%d",&n);
          getchar();//消去空格 
    	  char a[12][12];
    	  for(int i=0;i<2*n;i++)
    	  {
    	  	for(int j=0;j<2*n;j++)
    	  	{
    	  		a[i][j]=getchar();
    	  		getchar();
    	  	}
    	  } 
    	  
    	  int k;
    	  scanf("%d",&k);
    	  int x1,y1,x2,y2;
    	  int count=(2*n)*(2*n)/2;
    	  int wrong=0;
    	  for(int i=0;i<k;i++)
    	  {
    	  	
    	  	  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]='*';
    	  	  	count--;
    	  	  	if(count==0)//如果全为*,就成功 
    	  	  	{
    	  	  	    printf("Congratulations!
    ");
    	  	  	    return 0;
    	  	    }else//否则,输出新的图像 
    	  	    {
    	  	      for(int p=0;p<2*n;p++)
    				{
    					for(int q=0;q<2*n;q++)
    					{
    						printf("%c",a[p][q]);
    						if(q!=(2*n-1))
    						{
    							printf(" ");
    						}
    					}
    					printf("
    ");
    				}	
    	  	    }
    	  	  }else//没有配对成功 
    	  	  {
    			printf("Uh-oh
    ");
    			wrong++; 
    			if(wrong==3)
    			{
    				printf("Game Over
    ");
    				return 0;
    			}
    		  } 
    			 
    	  	
    	  	
    	  }
    	  
    	  
          return 0;
    }
    

      

  • 相关阅读:
    第53章:高级反调试技术
    第6章:加密算法
    第5章:演示版保护技术——光盘检测、只运行一个实例
    第5章:演示版保护技术——网络验证
    第5章:演示版保护技术——菜单功能限制、KeyFile保护
    第5章:演示版保护技术——时间限制
    第5章:演示版保护技术——警告窗口
    第5章:演示版保护技术——序列号保护方式
    第52章:动态反调试技术
    laravel 路由隐式绑定
  • 原文地址:https://www.cnblogs.com/ligen/p/4277258.html
Copyright © 2020-2023  润新知