C语言迷宫制造

目录

  • 开头
  • 程序
  • 程序的流程图
  • 程序的效果
  • 我推荐要制造的迷宫
  • 下一篇博客要讲的东西

开头

大家好,我叫这是我58。

程序

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h> 
#include <string.h>
void printmaze(const char strmaze[11][11]) {int ia = 0;int ib = 0;for (ia = 0; ia < 11; ia++) {for (ib = 0; ib < 11; ib++) {printf("\033[%sm%c\033[0m", 'G' == strmaze[ia][ib] ? "32;1" : "0", strmaze[ia][ib]);}printf("|\n");}printf("-----------@\n");
}
int main() {int i = 0;int ia = 0;int ip = 0;int ig = 0;char ch = 0;char strmaze[11][11] = { 0 };char* cpg = NULL;memset(strmaze, ' ', sizeof strmaze);char* cp = &strmaze[0][0];printf("迷宫制造的规则:\n\t1.迷宫最大能制造的大小为11*11\n\t2.迷宫中只能有“P”“\033[32;1mG\033[0m”“*”和空格,不能有的会自动地被清除掉\n\t3.可以用“/”或者“|”来结束迷宫的制造,只不过,用“|”来结束迷宫的制造的话就可以使你可以边界互通了\n\t4.在制造迷宫的时候,迷宫最多只能有121个字符,如果超出这个部分,那么就会在换行之后自动结束迷宫的制造,如果你制造的完整的迷宫的右边紧挨着“|”,那么就可以使你可以边界互通了\n\t5.最好把迷宫造的完整点,并且右边要加上“/”或者“|”,不然就会耽误你玩你自己做的迷宫的时间\n\n");while (ch = getchar(), ((' ' == ch || '*' == ch || 'P' == ch || 'G' == ch) && (i++, *cp = ch, (i <= 120 && cp++))), (ch - '/' && ch - '|')) {'P' == ch && ip++;'G' == ch && ig++;if (121 == i) {break;}}((!(ch - '|')) || (!(getchar() - '|'))) && (ia = 1);if (!(ip && ig)) {system("color 0C");system("cls");printf("ERROR: “P”或者“G”并\033[4m没有被创建出来\033[0m\n");return 1;}if (ip > 1 || ig > 1) {system("color 0C");system("cls");printf("ERROR: “P”和“G”\033[4m只能创建一个\033[0m\n");return 1;}for (i = 0, cp = NULL; !(cp && cpg); i++) {!cp && (cp = strstr(strmaze[i], "P"));!cpg && (cpg = strstr(strmaze[i], "G"));}system("cls");while ('\n' != getchar()) {;}while ('G' == *cpg) {printmaze(strmaze);scanf("%c", &ch);while ('\n' != getchar()) {;}*cp = ' ';switch (ch) {case 'w':for (i = 0; i < 11; i++) {if (cp == &strmaze[0][i]) {break;}}11 == i && '*' != *(cp - 11) && (cp -= 11);(ia && 11 != i && '*' != *(cp + 110)) && (cp += 110);break;case 'a':for (i = 0; i < 11; i++) {if (cp == &strmaze[i][0]) {break;}}11 == i && '*' != *(cp - 1) && cp--;(ia && 11 != i && '*' != *(cp + 10)) && (cp += 10);break;case 's':for (i = 0; i < 11; i++) {if (cp == &strmaze[10][i]) {break;}}11 == i && '*' != *(cp + 11) && (cp += 11);(ia && 11 != i && '*' != *(cp - 110)) && (cp -= 110);break;case 'd':for (i = 0; i < 11; i++) {if (cp == &strmaze[i][10]) {break;}}11 == i && '*' != *(cp + 1) && cp++;(ia && 11 != i && '*' != *(cp - 10)) && (cp -= 10);break;default:break;}*cp = 'P';system("cls");}system("color 0A");printf("恭喜你,你赢了\n");return 0;
}

程序的流程图

break
清屏
返回1
清屏
返回1
否(清屏)
是(break)
break
清屏
返回0
是(break)
break
是(break)
break
是(break)
break
否(break)
否(break)
否(break)
否(break)
否(break)
开始
把宏_CRT_SECURE_NO_WARNINGS定义为1
导入stdio.h
导入stdlib.h
导入string.h
定义printmaze函数
定义整型i为0
定义整型ia为0
定义整型ip为0
定义整型ig为0
定义字符ch为0
把有11行11列的二维字符数组strmaze全都初始化为0
定义字符指针cpg为空指针
把二维字符数组strmaze里的所有元素都改为空格
定义字符指针cp为二维字符数组strmaze第0行第0列的地址
输出“迷宫制造的规则:\​n\​t1.迷宫最大能制造的大小为11*11\​n\​t2.迷宫中只能有“P”“\​033[32;1mG\​033[0m”“*”和空格,不能有的会自动地被清除掉\​n\​t3.可以用“/”或者“|”来结束迷宫的制造,只不过,用“|”来结束迷宫的制造的话就可以使你可以边界互通了\​n\​t4.在制造迷宫的时候,迷宫最多只能有121个字符,如果超出这个部分,那么就会在换行之后自动结束迷宫的制造,如果你制造的完整的迷宫的右边紧挨着“|”,那么就可以使你可以边界互通了\​​n\​t5.最好把迷宫造的完整点,并且右边要加上“/”或者“|”,不然就会耽误你玩你自己做的迷宫的时间\​n\​n”
把ch设为你从缓冲区里最先读取到的字符
' ' == ch || '*' == ch || 'P' == ch || 'G' == ch?
i自增1
把解引用的cp设为ch
i <= 120?
把cp向右移动一位
ch - '/' && ch - '|'?
'P' == ch?
ip自增1
'G' == ch?
ig自增1
121 == i?
(!(ch - '|')) || (!(getchar() - '|'))?
设ia为1
!(ip && ig)?
把窗口的背景色设为黑色,前景色设为淡红色
输出“ERROR: “P”或者“G”并\​033[4m没有被创建出来\​033[0m\​n”
结束
ip > 1 || ig > 1?
把窗口的背景色设为黑色,前景色设为淡红色
输出“ERROR: “P”和“G”\​033[4m只能创建一个\​033[0m\​n”
设i为0
把cp设为空指针
!(cp && cpg)?
!cp?
从二维字符数组strmaze的第i项中找到字符串“P”的地址,如果找到了,cp就为strmaze的第i项中找到的字符串“P”的地址,否则cp为空指针
!cpg?
从二维字符数组strmaze的第i项中找到字符串“P”的地址,如果找到了,cpg就为strmaze的第i项中找到的字符串“G”的地址,否则cpg为空指针
i自增1
'\n' != getchar()?
'G' == *cpg?
执行printmaze函数,参数有二维字符数组strmaze
把ch设为你输入的字符
'\n' != getchar()?
把解引用的cp设为空格
'w' == ch?
设i为0
i < 11?
cp == &strmaze[0][i]?
11 == i && '*' != *(cp - 11)?
把cp向左移动11位
ia && 11 != i && '*' != *(cp + 110)?
把cp向右移动110位
把解引用的cp设为字符“P”
把窗口的背景色设为黑色,前景色设为淡绿色
输出“恭喜你,你赢了\​n”
'a' == ch?
设i为0
i < 11?
cp == &strmaze[i][0]?
11 == i && '*' != *(cp - 1)?
把cp向左移动一位
ia && 11 != i && '*' != *(cp + 10)?
把cp向右移动10位
's' == ch?
设i为0
i < 11?
cp == &strmaze[10][i]?
11 == i && '*' != *(cp + 11)?
把cp向右移动11位
ia && 11 != i && '*' != *(cp - 110)?
把cp向左移动110位
'd' == ch?
设i为0
i < 11?
cp == &strmaze[i][10]?
11 == i && '*' != *(cp + 1)?
把cp向右移动一位
ia && 11 != i && '*' != *(cp - 10)?
把cp向左移动10位
i自增1
i自增1
i自增1
i自增1
printfmaze函数
结束
开始
定义整型ia为0
定义整型ib为0
设ia为0
ia < 11?
设ib为0
ia < 11?
输出“\​033[%sm%c\​033[0m”(如果字符“G”为二维字符数组strmaze第ia行第ib列的元素,那么“%s”代“32;1”,否则代“0”,“%c”则代二维字符数组strmaze第ia行第ib列的元素的地址)
ib自增1
输出“|\​​n”
ia自增1
输出“-----------@\​n”

程序的效果

迷宫制造

我推荐要制造的迷宫

……

下一篇博客要讲的东西

sprintf函数和sscanf函数

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

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

相关文章

基于多案例全流程防洪评价报告编制方法与水流数学模型建模

《防洪评价报告编制导则解读河道管理范围内建设项目编制导则》&#xff08;SL/T808- 2021&#xff09;解读 编制导则解读 1.规范适用范围&#xff1b; 2.规范名词概念解读&#xff1b; 3.防洪评价计算类别及分析主要内容&#xff1b; 4.消除和减轻影响措施&#xff1b; 5.…

使用 pg_profile 在 Postgres 中生成性能报告

使用 pg_profile 在 Postgres 中生成性能报告 下载安装 pg_profile 从github链接下载pg_profile: https://github.com/zubkov-andrei/pg_profile/releases 解压缩到以下位置 # cd $PGHOME/share/extension/ # su - postgress $ psql -h 127.0.0.1 -d postgres -U postgress p…

Improving Language Understandingby Generative Pre-Training

摘要 自然语言理解包括各种各样的任务&#xff0c;如文本蕴涵、问题回答、语义相似性评估和文档分类。尽管大量未标记的文本语料库丰富&#xff0c;但用于学习这些特定任务的标记数据很少&#xff0c;这使得判别训练模型难以充分执行。我们证明&#xff0c;通过在不同的未标记…

筛质数(线性筛法)

线性筛法&#xff1a; 假设有一个非质数 x&#xff0c;那么这个数可以被表示为一个最小质因数和一个因子相乘的形式 如 x 12 &#xff0c;那么 x 2*6 其中&#xff1a;2 就是 12 的最小质因数&#xff0c; 6 就是另一个因子 线性筛法就是利用每个数的最小质因数筛掉这个非…

解决idea始终无法导入本地jar包

问题描述 maven刷新也没有用 解决&#xff1a; 找到本地Maven仓库的jar包手动引入 之后。导入成功

《黑神话:悟空》研发公司的薪资水平

作者&#xff1a;程序员晓凡 最近全网最火爆的要属《黑神话&#xff1a;悟空》了&#xff0c;即便是我这个平时不沾游戏、不追直播的人&#xff0c;也看直播看得津津有味。 一、销量与热度背后 首先&#xff0c;让我们来看看那些令人瞩目的数字。《黑神话&#xff1a;悟空》…

VBA技术资料MF194:屏蔽右键菜单

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

uniapp(微信小程序如何使用单选框、复选框)

一、先看效果 二、数据结构 说明&#xff1a;selected用来记录每次用户选择的值&#xff0c;当是单选的时候属性中的selected属性需要设置成字符串&#xff0c;当是复选框的时候&#xff0c;此时选择的是数组&#xff0c;selected属性应设置为数组。type用来区分当前是单选还是…

Wordpress 6.x 修改文件上传大小限制

1. 安装并启用Big File Uploads插件 插件 → 安装新插件 媒体→添加文件 修改后Save保存 2. 修改Nginx配置文件 # 我的配置在wordpress.conf文件中 vim /etc/nginx/conf.d/wordpress.conf 在server节点中加入下面这句配置 # 文件上传大小限制 client_max_body_size 500M;# 重…

xss-labs通关攻略 11-15关

第十一关&#xff1a;less-11 步骤一&#xff1a;利用burp抓包 步骤二&#xff1a;添加referer:click me!" type"button" οnmοuseοver"alert(/xss/)进行放包 第十二关&#xff1a;less-12 步骤一&#xff1a;利用burp抓包 步骤二&#xff1a;修改User A…

java 中的设计模式

文章目录 一、前言二、设计模式的分类三、设计模式的原则1、开闭原则&#xff08;Open Close Principle&#xff09;2、里氏代换原则&#xff08;Liskov Substitution Principle&#xff09;3、依赖倒转原则&#xff08;Dependence Inversion Principle&#xff09;4、接口隔离…

【计算机系统架构】从0开始构建一台现代计算机|时序逻辑、主存储器|第2章

博主简介&#xff1a;努力学习的22级计算机科学与技术本科生一枚&#x1f338;博主主页&#xff1a; Yaoyao2024往期回顾&#xff1a; 【计算机系统架构】从0开始构建一台现代计算机|二进制、布尔运算和ALU|第2章每日一言&#x1f33c;: 孤独和喧嚣都令人难以忍受。如果一定要忍…

参会投稿 | 第三届先进传感与智能制造国际学术会议(ASIM 2024)

第三届先进传感与智能制造国际会议&#xff08;The 3rd International Conference on Advanced Sensing, Intelligent Manufacturing&#xff09;&#xff0c;由江汉大学、西安交通大学和山东大学主办&#xff0c;由江西省机械工程学会、东华理工大学机械与电子工程学院等联合协…

iPhone突然黑屏?别慌,这里有你的自救指南

在日常使用iPhone的过程中&#xff0c;不少用户可能会遇到手机突然黑屏的情况&#xff0c;这往往让人措手不及。别担心&#xff0c;今天我们就来详细探讨一下iPhone突然黑屏的可能原因及解决方法&#xff0c;帮助你快速恢复手机的正常使用。 一、iPhone突然黑屏的可能原因 1. …

IPD+敏捷高级训战盛典(上海站)圆满落幕,引领创新管理新纪元

在金秋送爽的八月末&#xff0c;翰德恩咨询精心筹备的为期两日的“IPD敏捷高级训战盛典&#xff08;上海站&#xff09;”于24日至25日璀璨落幕&#xff0c;标志着一场汇聚行业精英、融合前沿管理智慧的盛宴圆满收官。此次盛典不仅是知识的碰撞与交融&#xff0c;更是企业转型升…

序列化组件对比

1、msgpack介绍 1.MsgPack产生的数据更小&#xff0c;从而在数据传输过程中网络压力更小 2.MsgPack兼容性差&#xff0c;必须按照顺序保存字段 3.MsgPack是二进制序列化格式&#xff0c;兼容跨语言 官网地址&#xff1a; https://msgpack.org/ 官方介绍&#xff1a;Its lik…

ST表(区间查询

解决的问题&#xff1a; 数组区间查询最大值和最小值对于解决数组的树状数组的区间修改 ------- 线段树倍增思想 核心代码&#xff1a; #include<bits/stdc.h> using namespace std; const int N1e5; int num[N]; int f[N][N]; int main(){int n;cin>>n;//输入默…

Vue 2.x时间转换为北京时间(+8)

文章目录 当前时间格式效果图理想时间格式效果图转换方法总结 当前时间格式效果图 非中国常用时间格式&#xff0c;在上图中给可以看到&#xff0c;选择的时间为&#xff1a;2024-8-26 ~ 2024-8-27&#xff0c;返回结果却是&#xff1a;2024-08-25TXX:XX:XXZ&#xff0c;明显不…

最大噪音值甚至受法规限制,如何基于LBM算法有效控制风扇气动噪音

风扇的气动噪声 在工业设备行业&#xff0c;最大噪音值受法规限制。在很多使用风扇冷却的设备上&#xff0c;风扇噪声通常是这些设备工作噪声的最大贡献量。而在家电民用行业&#xff0c;例如空调、空气净化器、油烟机等&#xff0c;其噪音大小直接关系到用户的体验感受&#x…

实现并发网络服务器

一&#xff0c;网络服务器 1.单循环网络服务器 —— 同一时刻只能处理一个客户端任务 2.并发服务器 —— 同一时刻能处理多个客户端任务 二&#xff0c;并发服务器 1.多线程 2.IO多路复用 3.多进程 三&#xff0c;IO模型 1.阻塞IO 阻塞IO&#xff08;Blocking IO&…