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], const char* ShAdDr[6]) {int ia = 0;int ib = 0;int ic = 0;const char str[4] = "134";for (ia = 0; ia < 9; ia++) {for (ib = 0; ib < 9; ib++) {for (ic = 0; ic < 6; ic++) {if (&strmaze[ia][ib] == ShAdDr[ic] && 'P' != *ShAdDr[ic]) {break;}}printf("\033[3%cm%c", 'G' == strmaze[ia][ib] ? '2' : 6 == ic ? '7' : str[ic % 3], strmaze[ia][ib]);}printf("\033[0m|\n");}printf("---------@\n");
}
int main() {int i = 0;int ie = 0;char ch = 0;const char strmaze[9][9] = {"P*\\      "," *  * * *","  **   * "," *\\* *   ","   **\\**#","#****    ","   *  *  "," *   * **","   *   #G"};char* cp = &strmaze[0][0];char* ShAdDr[6] = { &strmaze[3][2], &strmaze[4][5], &strmaze[0][2], &strmaze[5][0], &strmaze[4][8], &strmaze[8][7] };//ShAdDr -> Switchs And Doorschar regis[4] = "\\\\\\";printf("欢迎你来玩这个迷宫游戏,在这个迷宫中,“P”是你,“G”是终点,而“*”是墙,空格是你可以走的地方,“w”往上,“a”往左,“s”往下,“d”往右,“z”用来打开或者关闭开关,并且,“\\”和“/”都是开关,用来控制门“#”的开和关,而你只要走到终点就可以了,这就是这个迷宫游戏的规则");Sleep(6600);system("cls");while ('G' == strmaze[8][8]) {printmaze(strmaze, ShAdDr);scanf("%c", &ch);while ('\n' != getchar()) {;}*cp = ' ';for (ie = 0; ie < 3; ie++) {' ' == *ShAdDr[ie] && (*ShAdDr[ie] = regis[ie]);}switch (ch) {case 'w':for (i = 0; i < 9; i++) {if (cp == &strmaze[0][i]) {break;}}(9 == i && ('*' != *(cp - 9) && '#' != *(cp - 9))) && (cp -= 9);break;case 'a':for (i = 0; i < 9; i++) {if (cp == &strmaze[i][0]) {break;}}(9 == i && ('*' != *(cp - 1) && '#' != *(cp - 1))) && cp--;break;case 's':for (i = 0; i < 9; i++) {if (cp == &strmaze[8][i]) {break;}}(9 == i && ('*' != *(cp + 9) && '#' != *(cp + 9))) && (cp += 9);break;case 'd':for (i = 0; i < 9; i++) {if (cp == &strmaze[i][8]) {break;}}(9 == i && ('*' != *(cp + 1) && '#' != *(cp + 1))) && (cp++);break;case 'z':for (ie = 0; ie < 3; ie++) {if (ShAdDr[ie] == cp) {if ('\\' == regis[ie]) {regis[ie] = '/';}else {regis[ie] = '\\';}if ('\\' == *ShAdDr[ie]) {*ShAdDr[ie] = '/';}else {*ShAdDr[ie] = '\\';}if (' ' == *(ShAdDr[ie + 3])) {*(ShAdDr[ie + 3]) = '#';}else {*(ShAdDr[ie + 3]) = ' ';}}}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
定义整型ie为0
定义字符ch为0
把有9行9列的二维常变量字符数组strmaze初始化为下面的图片

等待6.6秒,等待好之后就清屏
是(break)
break
清屏
是(break)
break
是(break)
break
是(break)
break
break
否(break)
否(break)
否(break)
否(break)
否(break)
否(break)
定义字符指针cp为二维常变量字符数组strmaze的第0行的第0列的地址
把有六个字符指针的字符指针数组ShAdDr分别初始化为二维常变量字符数组strmaze的第3行的第2列的地址,二维常变量字符数组strmaze的第4行的第5列的地址,二维常变量字符数组strmaze的第0行的第2列的地址,二维常变量字符数组strmaze的第5行的第0列的地址,二维常变量字符数组strmaze的第4行的第8列的地址,二维常变量字符数组strmaze的第8行的第7列的地址
把有4个字符的字符串regis初始化为“\\\”
输出“欢迎你来玩这个迷宫游戏,在这个迷宫中,“P”是你,“G”是终点,而“*”是墙,空格是你可以走的地方,“w”往上,“a”往左,“s”往下,“d”往右,“z”用来打开或者关闭开关,并且,“\\”和“/”都是开关,用来控制门“#”的开和关,而你只要走到终点就可以了,这就是这个迷宫游戏的规则”
'G' == strmaze[8][8]?
执行printmaze函数,参数有二维常变量字符数组strmaze和字符指针数组ShAdDr
把字符ch设为你输入的字符
'\n' != getchar()?
把解引用的cp设为空格
设ie为0
ie < 3?
' ' == *ShAdDr[ie]?
把解引用的字符指针数组ShAdDr的第ie项设为字符串regis的第ie项
ie自增1
'w' == ch?
设i为0
i < 9?
cp == &strmaze[0][i]?
9 == i && ('*' != *(cp - 9) && '#' != *(cp - 9))?
把cp向左移动9位
把解引用的cp设为“P”
把窗口的背景色设为黑色,前景色设为淡绿色
输出“恭喜你,你赢了\n”
结束
'a' == ch?
设i为0
i < 9?
cp == &strmaze[i][0]?
9 == i && ('*' != *(cp - 1) && '#' != *(cp - 1))?
把cp向左移动一位
's' == ch?
设i为0
i < 9?
cp == &strmaze[8][i]?
9 == i && ('*' != *(cp - 1) && '#' != *(cp - 1))?
把cp向右移动9位
'd' == ch?
设i为0
i < 9?
cp == &strmaze[i][8]?
9 == i && ('*' != *(cp + 1) && '#' != *(cp + 1))?
把cp向右移动一位
'z' == ch?
设ie为0
ie < 3?
ShAdDr[ie] == cp?
'\\' == regis[ie]?
把字符串regis的第ie项设为“/”
'\\' == *ShAdDr[ie]?
把解引用的字符指针数组ShAdDr的第ie项设为“/”
' ' == *(ShAdDr[ie + 3])?
把解引用的字符指针数组ShAdDr的第ie加3项设为“#”
i自增1
i自增1
i自增1
i自增1
把字符串regis的第ie项设为“\”
把解引用的字符指针数组ShAdDr的第ie项设为“\”
把解引用的字符指针数组ShAdDr的第ie加3项设为空格
ie自增1
ShAdDr -> Switchs And Doors
printmaze函数
是(break)
结束
开始
定义整型ia为0
定义整型ic为0
把有4个字符的常变量字符串str初始化为“134”
设ia为0
ia < 9?
设ib为0
ib < 9?
设ic为0
ic < 6?
&strmaze[ia][ib] == ShAdDr[ic] && 'P' != *ShAdDr[ic]?
输出“\​033[3%cm%c”(如果字符“G”在二维常变量字符数组strmaze的第ia行的第ib列,那么第一个“%c”就代字符“2”,否则如果ic为6,那么第一个“%c”就代字符“7”,否则就代常变量字符串str的第ic模3项,而第二个“%c”则代维常变量字符数组strmaze的第ia行的第ib列
ib自增1
输出“\​033[0m|\​n”
ia自增1
输出“---------@\​n”
ic自增1

程序的效果

开关迷宫

结尾

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

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

昇思25天学习打卡营第23天|munger85

FCN图像语义分割 FCN-8s表示从8倍下采样的特征图通过上采样恢复到原图尺寸的网络结构。现在下载数据集&#xff0c;这种8倍的比较好。 from download import download url “https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/datasets/dataset_fcn8s.t…

2024年用户口碑超佳的硬U盘数据恢复工具榜

U盘一个体积小小却能携带大量文件、视频的日常存储好物&#xff0c;你肯定也有吧。不知道你有没有遇到过U盘里数据丢失的情况&#xff0c;这时候U盘数据恢复工具就能帮我们走出这种困境。 1.U盘F0XIT数据恢复大师 一键直达>>https://www.pdf365.cn/foxit-restore/ 这…

自动驾驶-机器人-slam-定位面经和面试知识系列05之常考公式推导(02)

这个博客系列会分为C STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新&#xff0c;基本涵盖了自己秋招历程被问过的面试内容&#xff08;除了实习和学校项目相关的具体细节&#xff09;。在知乎和牛客&#xff08;牛客上某些文章上会附上内推码&#xff09;也会同步…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《面向东北地区调频指标两段式火储联合调频策略》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

浅谈断言之XML断言

浅谈断言之XML断言 XML断言是JMeter的一个组件&#xff0c;用于验证请求的响应数据是否符合XML结构。这对于测试返回XML格式数据的Web服务特别有用。 如何添加XML断言&#xff1f; 要在JMeter测试计划中添加XML断言&#xff0c;遵循以下步骤&#xff1a; 打开测试计划&…

C#知识|账号管理系统:将修改账号信息提交到数据库

哈喽,你好啊,我是雷工! 昨天练习了账号管理系统-修改账号按钮功能的实现: 《修改账号按钮功能的实现》; 接下来继续学习,如何将修改完的信息提交到数据库, 以下为学习笔记。 01 实现功能 ①:当修改完信息,点击【提交修改】按钮时,将修改完的信息保存到SQLServer数…

Qt调用谷歌拼音输入插件

要在Qt中调用谷歌拼音输入插件 编译谷歌拼音输入法源码&#xff1a; 可以通过编译谷歌拼音输入法的源码来实现在Qt中的应用。以下是一些步骤&#xff1a; 下载QtInputMethod_GooglePinyin源码&#xff0c;例如从Gitee获取。 使用MinGW64或MSVC2019_64构建套件编译源码。 编译完…

Cyberchef基础概念之-循环语句操作-Jump/Label

在本专栏的前面的文章介绍了fork,merge,subsection,register等多种概念来解决实际场景的问题。本文将介绍的Jump/Label的操作类似于编程语言中的for和while的功能&#xff0c;相信在学会使用jump操作后&#xff0c;将有助于解决更为复杂的数据处理问题。 本文将详细的介绍该操…

小程序的运营方法:从入门到精通

随着科技的快速发展&#xff0c;小程序已成为我们日常生活和工作中不可或缺的一部分。小程序无需下载安装&#xff0c;即用即走的特点深受用户喜爱。那么&#xff0c;如何运营好一个小程序呢&#xff1f;下面就为大家分享一些小程序的运营方法。 一、明确目标用户 在运营小程序…

【计算机网络】单臂路由实现VLAN间路由实验

一&#xff1a;实验目的 1&#xff1a;掌握如何在路由器端口上划分子接口&#xff0c;封装dot1q协议&#xff0c;实现VLAN间的路由。 二&#xff1a;实验仪器设备及软件 硬件&#xff1a;RCMS-C服务器、网线、Windows 2019/2003操作系统的计算机等。具体为&#xff1a;路由器…

集成千兆网口(Gigabit Ethernet Port)的作用主要是提供高速的有线网络连接,其工作原理涉及以下几个关键点:

传输速率&#xff1a; 千兆网口支持的最高传输速率达到1 Gbps&#xff08;即每秒10亿位&#xff09;&#xff0c;是传统百兆网口&#xff08;100 Mbps&#xff09;的十倍速度。这使得它能够处理更大量、更高质量的数据传输。 数据传输效率&#xff1a; 千兆网口能显著提高局域…

express连接mysql

一、 安装express npm install express --save二、express配置 //引入 const express require("express"); //创建实例 const app express(); //启动服务 app.listen(8081, () > {console.log("http://localhost:8081"); });三、安装mysql npm i m…

pip install albumentations安装下载超级细水管

albumentations 是一个用于图像增强的 Python 库&#xff0c;它提供了丰富的图像变换功能&#xff0c;可以用于数据增强&#xff0c;从而提高深度学习模型的泛化能力。 直接安装命令&#xff1a; pip install albumentations但是如果半夜遇到这种19kB/s的下载速度 为头发着想&…

《Milvus Cloud向量数据库指南》——Zilliz引领非结构化数据革命:北京Meetup圆满落幕,共绘AI新篇章

7月20日北京Unstructured Data Meetup圆满落幕:Zilliz引领非结构化数据革命,共绘AI新蓝图 随着数字时代的到来,数据已成为驱动社会进步与产业升级的关键要素。其中,非结构化数据以其形式多样、内容丰富、增长迅速的特点,在医疗、金融、教育、娱乐等多个领域展现出巨大的应…

Ruby、Python、Java 开发者必备:Codigger之软件项目体检

在编程的广阔天地里&#xff0c;Ruby、Python 和 Java 开发者们各自凭借着独特的语言特性&#xff0c;构建着精彩纷呈的应用世界。然而&#xff0c;无论使用哪种语言&#xff0c;确保项目的高质量始终是至关重要的目标。而 Codigger 项目体检则成为了实现这一目标的得力助手&am…

在线投稿小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;编辑管理&#xff0c;用户文章管理&#xff0c;文章分类管理&#xff0c;文章展示管理&#xff0c;文章稿酬管理&#xff0c;通知公告管理&#xff0c;系统管理 微信端账号功能包…

LabVIEW开发射频测试和测量系统

本文将介绍如何使用LabVIEW开发一个射频&#xff08;RF&#xff09;测试和测量系统。该系统的主要功能是对射频信号进行测量和控制&#xff0c;提供用户友好的界面来进行各种操作。 硬件组成 射频信号发生器&#xff1a;用于生成特定频率和功率的射频信号。 射频功率计&#…

Mistral新旗舰决战Llama 3.1,最强开源Large 2 123B,扛鼎多语言编程全能王

【新智元导读】紧跟着Meta的重磅发布&#xff0c;Mistral Large 2也带着权重一起上新了&#xff0c;而且参数量仅为Llama 3.1 405B的三分之一。不仅在编码、数学和多语言等专业领域可与SOTA模型直接竞争&#xff0c;还支持单节点部署。 昨天正式发布的Llama 3.1模型&#xff0…

paddle ocr 文字识别模型训练 svtr

训练模型方法参考&#xff1a;https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/recognition.md 实践&#xff1a;https://aistudio.baidu.com/projectdetail/4482681 SVTR 算法原理 SVTR: Scene Text Recognition with a Single Visual Model Yongkun Du a…

小论文写不出来?一文告别没思路!SCI级新算法闪耀登场,完整代码及应用直接获取

最近稍微有点忙&#xff0c;事情比较多&#xff0c;构思灵感花费了不少时间。这次发布的算法和前几个基于数学基本思想开发的算法不一样&#xff0c;是一种基于动物的一种算法&#xff0c;从动物的本能和行为中汲取灵感。本算法的开发&#xff0c;灵感撰写以及完整的算法已经全…