• 实验7-2-10 简易连连看 (20分)


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

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

    输入格式:

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

    输出格式:

    根据玩家的每一步输入,输出相应的结果。输出盘面时注意,每行字符间以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 <stdio.h>
    #include <stdlib.h>
    
    int n,k,error,right;
    char mp[10][10];
    void print() {
        for(int i = 0;i < n * 2;i ++) {
            for(int j = 0;j < n * 2;j ++) {
                putchar(mp[i][j]);
                if(j == n * 2 - 1) putchar('
    ');
                else putchar(' ');
            }
        }
    }
    int main() {
        int x1,y1,x2,y2;
        scanf("%d",&n);
        for(int i = 0;i < n * 2;i ++) {
            for(int j = 0;j < n * 2;j ++) {
                getchar();
                mp[i][j] = getchar();
            }
        }
        scanf("%d",&k);
        for(int i = 0;i < k;i ++) {
            scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
            x1 --;y1 --;x2 --;y2 --;
            if(mp[x1][y1] == mp[x2][y2] && mp[x1][y1] != '*') {
                mp[x1][y1] = mp[x2][y2] = '*';
                right ++;
                if(right == n * n * 2) {
                    printf("Congratulations!
    ");
                    break;
                }
                print();
            }
            else {
                error ++;
                printf("Uh-oh
    ");
                if(error == 3) {
                    printf("Game Over
    ");
                    break;
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    运算符、基本数据类型-----整型、字符串
    练习题
    python安装与初识(python起源、分类,if语句、while语句、基本数据类型、变量的命名)
    hdu2187悼念512汶川大地震遇难同胞——老人是真饿了(贪心 简单题)
    牛客小白月赛9 A签到(分数取模,逆元)
    牛客小白月赛9H论如何出一道水题(两个连续自然数互质)
    EOJ3134. 短信激活码(大数幂取模)
    EOJ3650 转机折扣(26进制,字符串)
    hdu1042 N!(大数求阶乘)
    hdu2061 Treasure the new start, freshmen!(暴力简单题)
  • 原文地址:https://www.cnblogs.com/8023spz/p/12243231.html
Copyright © 2020-2023  润新知