C语言边界互通传送迷宫

目录

  • 注意事项
  • 开头
  • 程序
  • 程序的流程图
  • 程序输入与输出的效果
  • 结尾

注意事项

  • 程序里有关字符’\033’的输出都关于Sunshine-Linux的其中一篇博客——《printf函数高级用法设置打印字体颜色和背景色等》

开头

大家好,我叫这是我58。今天,我们来看一下我用C语言编译的边界互通传送迷宫和与之相关的一些东西。

程序

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <Windows.h>
void printmaze(const char strmaze[9][9]) {int ia = 0;int ib = 0;for (ia = 0; ia < 9; ia++) {for (ib = 0; ib < 9; ib++) {printf("\033[%sm%c", 'G' == strmaze[ia][ib] ? "32" : '^' == strmaze[ia][ib] ? "33" : "0", strmaze[ia][ib]);}printf("\033[0m|\n");}printf("---------@\n");
}
int main() {int i = 0;char ch = 0;char strmaze[9][9] = {" *  ^^ ^ ","*P*^ ^  ^","^*^    ^ "," ^ ^^^ ^ ","      ^  ","   ^ ^^ ^","^^ ^    ^","    ^  G "," ^  ^  * "};char* cp = &strmaze[1][1];char* const carrp[32] = { &strmaze[0][4],&strmaze[0][5],&strmaze[0][7],&strmaze[1][3],&strmaze[1][5],&strmaze[1][8],&strmaze[2][0],&strmaze[2][7],&strmaze[3][3],&strmaze[3][4],&strmaze[3][7], &strmaze[4][6],&strmaze[6][0],&strmaze[3][1],&strmaze[5][6],&strmaze[6][3],&strmaze[7][4],&strmaze[2][2],&strmaze[3][5],&strmaze[6][1],&strmaze[6][8],&strmaze[5][8],&strmaze[5][5],&strmaze[5][3],&strmaze[8][4],&strmaze[8][1],&strmaze[0][1],&strmaze[1][0],&strmaze[1][2],&strmaze[2][1],&strmaze[8][7],&strmaze[1][1] };printf("欢迎你来玩这个迷宫游戏,在这个迷宫中,“P”是你,“G”是终点,而“*”是你可以走的地方,空格是虚空,你不能走,“w”往上,“a”往左,“s”往下,“d”往右,并且,这个迷宫边界互通,而且只要在传送点“^”上输入“z”,就可以传送到这个传送点的另一端,而你只要走到终点就可以了,这就是这个迷宫游戏的规则");Sleep(8800);system("cls");while ('G' == strmaze[7][7]) {printmaze(strmaze);scanf("%c", &ch);while ('\n' != getchar()) {;}*cp = ' ';for (i = 0; i < 26; i++) {' ' == *carrp[i] && (*carrp[i] = '^');}for (; i < 32; i++) {' ' == *carrp[i] && (*carrp[i] = '*');}switch (ch) {case 'w':for (i = 0; i < 9; i++) {if (cp == &strmaze[0][i]) {break;}}(9 == i && ' ' != *(cp - 9)) && (cp -= 9);(9 != i && ' ' != *(cp + 72)) && (cp += 72);break;case 'a':for (i = 0; i < 9; i++) {if (cp == &strmaze[i][0]) {break;}}(9 == i && ' ' != *(cp - 1)) && cp--;(9 != i && ' ' != *(cp + 8)) && (cp += 8);break;case 's':for (i = 0; i < 9; i++) {if (cp == &strmaze[8][i]) {break;}}(9 == i && ' ' != *(cp + 9)) && (cp += 9);(9 != i && ' ' != *(cp - 72)) && (cp -= 72);break;case 'd':for (i = 0; i < 9; i++) {if (cp == &strmaze[i][8]) {break;}}(9 == i && ' ' != *(cp + 1)) && (cp++);(9 != i && ' ' != *(cp - 8)) && (cp -= 8);break;case 'z':for (i = 0; i < 26; i++) {if (carrp[i] == cp) {i < 13 && (cp = carrp[i + 13]), i < 13 || (cp = carrp[i - 13]);break;}}break;default:break;}*cp = 'P';system("cls");}system("color 0A");printf("恭喜你,你赢了\n");return 0;
}

程序的流程图

开始
把宏_CRT_SECURE_NO_WARNINGS定义为1
导入stdio.h
导入Windows.h
定义printmaze函数
定义型i为0
定义字符ch为0
定义二维字符数组strmaze为下面的图片

等待8.8秒,等待好后就清屏
是(break)
break
清屏
是(break)
break
是(break)
break
是(break)
break
否(break)
否(break)
否(break)
否(break)
否(break)
否(break)
定义字符指针cp为二维字符数组strmaze第一行第一列的元素的地址
把有32个字符指针的常量数组carrp分别初始化为第0行第4列的地址,第0行第5列的地址,第0行第7列的地址,第1行第3列的地址,第1行第5列的地址,第1行第8列的地址,第2行第0列的地址,第2行第7列的地址,第3行第3列的地址,第3行第4列的地址,第3行第7列的地址,第4行第6列的地址,第6行第0列的地址,第3行第1列的地址,第5行第6列的地址,第6行第3列的地址,第7行第4列的地址,第2行第2列的地址,第3行第5列的地址,第6行第1列的地址,第6行第8列的地址,第5行第8列的地址,第5行第5列的地址,第5行第3列的地址,第8行第4列的地址,第8行第1列的地址,第0行第1列的地址,第1行第0列的地址,第1行第2列的地址,第2行第1列的地址,第8行第7列的地址和第1行第1列的地址
输出“欢迎你来玩这个迷宫游戏,在这个迷宫中,“P”是你,“G”是终点,而“*”是你可以走的地方,空格是虚空,你不能走,“w”往上,“a”往左,“s”往下,“d”往右,并且,这个迷宫边界互通,而且只要在传送点“^”上输入“z”,就可以传送到这个传送点的另一端,而你只要走到终点就可以了,这就是这个迷宫游戏的规则”
'G' == strmaze[7][7]?
把字符ch设为你输入的字符
'\n' != getchar()?
把解引用的的cp设为空格
设i为0
i < 26?
' ' == *carrp[i]?
把解引用的字符指针常量数组carrp的第i项设为“^”
i自增1
i < 32?
' ' == *carrp[i]?
把解引用的字符指针常量数组carrp的第i项设为“*”
i自增1
'w' == ch?
设i为0
i < 9?
cp == &strmaze[0][i]?
9 == i && ' ' != *(cp - 9)?
把cp向左移动9位
9 != i && ' ' != *(cp + 72)?
把cp向右移动72位
把解引用的cp设为“P”
把窗口的背景色设为黑色,前景色设为淡绿色
输出“恭喜你,你赢了\n”
结束
'a' == ch?
设i为0
i < 9?
cp == &strmaze[i][0]?
9 == i && ' ' != *(cp - 1)?
把cp向左移动一位
9 != i && ' ' != *(cp + 8)?
cp向右移动8位
's' == ch?
设i为0
i < 9?
cp == &strmaze[8][i]?
9 == i && ' ' != *(cp + 9)?
把cp向右移动9位
9 != i && ' ' != *(cp - 72)?
把cp向左移动72位
'd' == ch?
设i为0
i < 9?
cp == &strmaze[i][8]?
9 == i && ' ' != *(cp + 1)?
把cp向右移动一位
9 != i && ' ' != *(cp - 8)?
把cp向左移动8位
'z' == ch?
设i为0
i < 26?
carrp[i] == cp?
i < 13?
把cp设为字符指针常量数组carrp的第i加13项
i < 13?
break
i自增1
i自增1
i自增1
i自增1
i自增1
把cp设为字符指针常量数组carrp的第i减13项
printmaze函数
结束
开始
定义整型ia为0
定义整型ib为0
设ia为0
ia < 9?
设ib为0
ib < 9?
输出“\​033[%sm%c”(如果有9行9列的常量二维数组strmaze的第ia行第ib列为“G”,那么就代“32”,否则如果有9行9列的常量二维数组strmaze的第ia行第ib列为“^”,那么就代“33”,否则就代“0”,“%c”则代有9行9列的常量二维数组strmaze的第ia行第ib列的字符)
ib自增1
输出“\​033[0m|\​n”
ia自增1
输出“---------@\​n”

程序输入与输出的效果

边界互通传送迷宫

结尾

在你看到这里后,可以评论来互动一下我哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/50550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现代Java开发:使用jjwt实现JWT认证

前言 jjwt 库 是一个流行的 Java 库&#xff0c;用于创建和解析 JWT。我在学习spring security 的过程中看到了很多关于jwt的教程&#xff0c;其中最流行的就是使用jjwt实现jwt认证&#xff0c;但是教程之中依然使用的旧版的jjwt库&#xff0c;许多的类与方法已经标记弃用或者…

InsCode GPU服务器快速使用

文章目录 1. 背景介绍2. 环境配置 1. 背景介绍 InsCode服务器地址&#xff1a;https://inscode.csdn.net/workbench?tabcomputed。 2. 环境配置 新建环境后&#xff0c;按照如下步骤快速配置&#xff0c;以便后续执行深度学习模型训练。 数据 openlane 环境依赖 Copy Mini…

数据结构与算法--顺序表(Java)

&#x1f4dd;个人主页&#x1f339;&#xff1a;誓则盟约 ⏩收录专栏⏪&#xff1a;Java SE &#x1f921;往期回顾&#x1f921;&#xff1a;Java SE--基本数据类型&#xff08;详细讲解&#xff09; &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 什么…

【Python面试题收录】Python编程基础练习题②(数据类型+文件操作+时间操作)

本文所有代码打包在Gitee仓库中https://gitee.com/wx114/Python-Interview-Questions 一、数据类型 第一题 编写一个函数&#xff0c;实现&#xff1a;先去除左右空白符&#xff0c;自动检测输入的数据类型&#xff0c;如果是整数就转换成二进制形式并返回出结果&#xff1b…

昇思25天学习打卡营第23天|CV-ResNet50迁移学习

打卡 目录 打卡 迁移学习 实战练习 数据准备 数据处理 数据处理函数 数据处理流程 数据可视化 训练模型 构建Resnet50网络 固定特征进行训练 network 的输出 训练和评估 可视化模型预测 掌握迁移学习的重点在于&#xff0c;了解你的模型结构&#xff0c;通过冻结…

数据库安全审计系统:“可视化、可控化、智能化”护航数据安全

随着政府、企事业单位的业务规模逐步扩大&#xff0c;数据库的数量明显增长&#xff0c;各数据库的访问量激增&#xff0c;数据库安全隐患也日益扩大&#xff0c;主要体现如下&#xff1a; 一是敏感信息被泄露。例如用户姓名、银行账户、联系电话、用户地址等重要信息被泄露。 …

【odoo17 | Owl】前端js钩子调用列表选择视图

概要 在我们选择多对一或者多对多字段的时候&#xff0c;经常看到可以弹出列表弹窗让人一目了然的效果&#xff0c;效果如下&#xff1a; 那么&#xff0c;这种效果是odoo本身封装好的组件&#xff0c;我们在平时的前端界面开发的时候&#xff0c;既不是后端视图的情况下&#…

【YOLOv5/v7改进系列】引入中心化特征金字塔的EVC模块

一、导言 现有的特征金字塔方法过于关注层间特征交互而忽视了层内特征的调控。尽管有些方法尝试通过注意力机制或视觉变换器来学习紧凑的层内特征表示&#xff0c;但这些方法往往忽略了对密集预测任务非常重要的被忽视的角落区域。 为了解决这个问题&#xff0c;作者提出了CF…

数据结构(5.3_4)——线索二叉树的概念

普通二叉树找某结点前驱和后继的方法 中序线索二叉树 n个结点的二叉树&#xff0c;有n1个空链域!可用来记录前驱&#xff0c;后继的信息 中序线索二叉树的存储结构 //线索二叉树结点 typedef struct ThreadNode {ElemType data;struct BiTNode* lchild, * rchild;int ltag,…

大模型:AI领域的下一个风口

一、什么是大模型&#xff1f; 大模型&#xff0c;顾名思义&#xff0c;是指具有超大规模的神经网络模型。它们通常需要海量的数据和计算资源来训练和运行。典型的大模型有 GPT-3、BERT、AlphaFold 等&#xff0c;这些模型在自然语言处理、生物信息学等领域取得了显著的成果。…

商场导航系统:从电子地图到AR导航,提升顾客体验与运营效率的智能解决方案

商场是集娱乐、休闲、社交于一体的综合性消费空间&#xff0c;随着商场规模的不断扩大和布局的日益复杂&#xff0c;顾客在享受丰富选择的同时&#xff0c;也面临着寻路难、店铺曝光率低以及商场管理效率低下等挑战。商场导航系统作为提升购物体验的关键因素&#xff0c;其重要…

黄景仁,笔墨间的一抹清寒

黄景仁&#xff0c;字汉镛&#xff0c;一字仲则&#xff0c;号鹿菲子&#xff0c;生于乾隆十四年&#xff08;公元1749年&#xff09;&#xff0c;卒于乾隆四十八年&#xff08;公元1783年&#xff09;&#xff0c;享年仅35岁。他是宋代大诗人黄庭坚的后裔&#xff0c;出生于常…

deepseek-vl 论文阅读笔记

目录 一、已有模型性能差距分析 二、创新点 数据集构建 模型架构 训练策略 实验与评估 三、细节 数据构建 内部SFT数据的分类体系 模型架构 训练流程包括三个阶段 系统包含三个模块 混合视觉编码器 视觉-语言适配器 语言模型 训练策略 阶段一&#xff1a;训练…

AMQP-核心概念-3

本文参考以下链接摘录翻译&#xff1a; https://www.rabbitmq.com/tutorials/amqp-concepts 队列&#xff08;Queues&#xff09; AMQP 0-9-1模型中的队列和其他消息任务队列系统中的队列非常相似&#xff1a;它们用于存储被应用消费的消息。队列和交换机有一些相同的属性&…

【React】JSX:从基础语法到高级用法的深入解析

文章目录 一、什么是 JSX&#xff1f;1. 基础语法2. 嵌入表达式3. 使用属性4. JSX 是表达式 二、JSX 的注意事项1. 必须包含在单个父元素内2. JSX 中的注释3. 避免注入攻击 三、JSX 的高级用法1. 条件渲染2. 列表渲染3. 内联样式4. 函数作为子组件 四、最佳实践 在 React 开发中…

云计算实训室建设可行性报告

一、建设云计算实训室的目的和意义 随着信息技术的飞速发展&#xff0c;云计算作为一种新型的信息服务模式&#xff0c;已经成为推动信息技术创新和促进信息产业发展的重要力量。中高职院校作为培养高素质技能人才的重要基地&#xff0c;应当紧跟时代步伐&#xff0c;加强云计…

视觉-语言-行动模型:将网络知识迁移至机器人控制(RT-2论文翻译)

RT-2: Vision-Language-Action Models Transfer Web Knowledge to Robotic Control RT-2: 用互联网知识训练的视觉语言模型融入到机器人控制中 RT1 论文翻译&#xff1a; https://blog.csdn.net/weixin_43334869/article/details/135850410 文章目录 RT-2: Vision-Language…

关键词查找【Boyer-Moore 算法】

1、【Boyer-Moore 算法】 【算法】哪种算法有分数复杂度&#xff1f;- BoyerMoore字符串匹配_哔哩哔哩_bilibili BM算法的精华就在于BM(text, pattern),也就是BM算法当不匹配的时候一次性可以跳过不止一个字符。即它不需要对被搜索的字符串中的字符进行逐一比较&#xff0c;而…

AI绘画入门实践 | Midjourney:使用 --tile 制作面料纹理与壁纸背景图

在 Midjourney 中&#xff0c;--tile 生成可以连续平铺的图像&#xff0c;常用于面料墙纸与纹理的无缝图案。 使用格式&#xff1a;提示词 --tile 使用演示 a pink rose, clean background --tile --niji 5 无缝图检查工具&#xff1a;https://www.pycheung.com/checker/ 平铺…

文件共享功能无法使用提示错误代码0x80004005【笔记】

环境情况&#xff1a; 其他电脑可以正常访问共享端&#xff0c;但有一台电脑访问提示错误代码0x80004005。 处理检查&#xff1a; 搜索里输入“启用或关闭Windows功能”按回车键&#xff0c;在“启用或关闭Windows功能”里将“SMB 1.0/CIFS文件共享支持”勾选后&#xff08;故…