zoukankan      html  css  js  c++  java
  • 简易连连看

    题目描述

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

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

    输入描述

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

    输出描述

    根据玩家的每一步输入,输出相应的结果。输出盘面时注意,每行字符间以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
    

    输出样例

    * 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!
    

    哇,这个题是要多坑就有多坑!

    @1: 当达到3次 “Uh-oh” 时,是打印出第3次Uh-oh 之后再打印 "Game Over" ,也就是要打印3次Uh-oh,第三次Uh-oh后面要连接一个“Game Over”。

    题目又不说清楚。

    @2:当你输入两个坐标把它们变成  *  之后,如果下一次又输入同样这两个坐标,那么应该输出Uh-oh 而不是再输一遍 * 。所以说这里坑。

    @3 我再多给一组测试数据就好理解了。

    输入样例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<cstring>
    #include<algorithm>
    using namespace std;
    
    char map[100][100],temp[100][100];
    
    int main()
    {
    	int n,m,j,k,i,T,t=0;
    	int x1,y1,x2,y2;
    	
    	cin>>n;
    	getchar();
    	for (i=0;i<2*n;i++)
    	gets(temp[i]);
    	
    	for (i=0;i<2*n;i++)
    	{
    		t=0;
    		for (j=0;temp[i][j]!='';j++)
    		{
    			if (temp[i][j]!=' ')
    			map[i][t++] = temp[i][j];//把原字符数组变成没有空格的新字符串数组 
    		}
    	}
    	
    	
    	cin>>T;
    	int sum=0,flag=1,first=0;
    	while (T--)
    	{
    		cin>>x1>>y1>>x2>>y2;
    		flag=1;
    		if (map[x1-1][y1-1] == map[x2-1][y2-1] && map[x1-1][y1-1]!='*')//一定要注意变成*后就不能再覆盖变*了 
    		{
    			/////////////////////////////////////////
    			map[x1-1][y1-1] = map[x2-1][y2-1]='*';
    			////////////////////////////////////////
    			for (i=0;i<2*n;i++)
    			{
    				for (j=0;j<2*n;j++)
    				{
    					if (map[i][j]!='*')
    					{
    						flag = 0;break;
    					}
    				}
    			}
    			if (flag==1)
    			{
    				printf("Congratulations!
    ");
    				return 0;
    			}
    			////////////////////////////////////
    			
    			for (i=0;i<2*n;i++)
    			{
    				for (j=0;j<2*n;j++)
    				{
    					if (j==0) printf("%c",map[i][j]);
    					else printf(" %c",map[i][j]);
    				}
    				printf("
    ");
    			}	
    		}
    		else
    		{
    			sum++;
    			
    			printf("Uh-oh
    ");//先打印 
    			
    			if (sum==3)
    			{
    			printf("Game Over
    ");//后打印 
    			return 0;
    			}
    			
    		}
    	}
    	return 0;
    }
  • 相关阅读:
    动态存储区(堆)、动态存储区(栈)、静态存储区、程序代码区
    auto, extern, register, static
    #include <iomanip>
    use
    ZooKeeper某一QuorumPeerMain挂了
    python 中的 字符串 列表 元祖 字典
    JAVA的23种设计模式
    spark job分析
    Spark1
    SQL三大范式
  • 原文地址:https://www.cnblogs.com/Romantic-Chopin/p/12451326.html
Copyright © 2011-2022 走看看