当前位置: 首页 > news >正文

7-2-10 简易连连看

7-2-10 简易连连看

重新整理思路,写的代码多点,思路清晰点。

**题目要求**
本题要求实现一个简易连连看游戏模拟程序。
给定一个22N的方阵网格游戏盘面,每个格子中放置一些符号。
这些符号一定是成对出现的,同一个符号可能不止一对。
程序读入玩家给出的一对位置(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;
}

在这里插入图片描述
模拟思路写的,可能写的不是很简洁。可供参考。

相关文章:

  • Neo4j GDS-01-graph-data-science 图数据科学插件库概览
  • Ollama本地大模型-个性化AI:训练自己的风格模型和数据投喂打造专属智能体验
  • hexo+butterfly博客功能完善和美化(二)
  • CSS3 背景
  • Gemini Advanced新功能详解:AI创作与协作的终极解决方案
  • 详解Sympy:符号计算利器
  • 第十三次CCF-CSP认证(含C++源码)
  • Springboot 项目如何输出优雅的日志
  • Godot读取json配置文件
  • SHELL常用字体颜色代码
  • TCP/UDP传输过程
  • 在 Spring Boot 中调用 AnythingLLM 的发消息接口
  • 如何确保爬虫遵守Shopee的使用条款?
  • uniapp实现全局拖拽按钮
  • 力扣算法Hot100——75. 颜色分类
  • GaussDB 资源管理指南:冻结、解冻、释放与生命周期控制
  • Node.js 中使用 RabbitMQ
  • 【Golang】go如何通过atomic原子操作来确保数据一致性
  • AFFiNE:下一代开源全能知识库工具,重新定义协作与创作
  • 深入理解JVM类加载机制:从原理到实践
  • 阿尔巴尼亚执政党连续第四次赢得议会选举,反对党此前雇用特朗普竞选经理
  • “一码难求”的Manus开放注册但价格不菲,智能体距离“实用”还有多远
  • 中华人民共和国和巴西联邦共和国关于强化携手构建更公正世界和更可持续星球的中巴命运共同体,共同维护多边主义的联合声明
  • 中保协发布《保险机构适老服务规范》,全面规范保险机构面向老年人提供服务的统一标准
  • 兰州大学教授安成邦加盟复旦大学中国历史地理研究所
  • 广东:十年后省级水网主骨架全面建成,与国家骨干网互联互通