C语言边界互通传送迷宫

news2024/11/25 16:41:08

目录

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

注意事项

  • 程序里有关字符’\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.coloradmin.cn/o/1952659.html

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

相关文章

dpdk编译安装以及接收udp报文(基于ubuntu)

目录 1、编译 2、设置运行环境 3、使用dpdk接收udp报文 3.1、设置发送端arp信息 3.2、测试 3.3、代码 4、其他 1、编译 代码下载&#xff1a; DPDK 下载版本&#xff1a;DPDK 19.08.2 export RTE_SDK/root/dpdk-stable-19.08.2/ export RTE_TARGETx86_64-native-li…

[杂项] 判断一个C++程序是多少位数属于那种编译版本

C/C程序 使用Process Explore。找到运行的程序后双击。 在image可以看到程序的位数。 view→lower Pane View → DLLs。通过查看vc运行库的dll是否带d后缀可以判断该程序是debug版本还是release版本 dependcyWalker 使用 dependcyWalker 来查看程序的位数及编译版本。注意…

每日一练,java06

这里写目录标题 题目1.局部变量能否和成员变量重名&#xff1f;2.下面哪个不属于HttpServletResponse接口完成的功能&#xff1f;3.以下代码结果是什么&#xff1f;4.实现或继承了Collection接口的是&#xff08;&#xff09;知识点局部变量与成员变量重名equals与HttpServletR…

微服务实战系列之玩转Docker(七)

前言 在上一篇中&#xff0c;博主对通过docker registry完成私仓搭建的过程&#xff0c;进行了完整演示和说明。一个docker 环境&#xff08;比如desktop&#xff09;&#xff0c;一个registry镜像&#xff0c;准备好这样的“2件套”&#xff0c;就能换来一个私有仓库了。 简…

PLC 远程下载网关

一、 产品概述 SSF-BOX-100 是三石峰科技有限公司推出的工业级 PLC 远程下载网关&#xff0c;主 要用于 PLC 远程调试、程序上下载&#xff0c;为用户提供一种简单可靠的远程维护方案。 1.1 SGBOX 软件 SGBOX 软件是 SSF-BOX-100 网关的配套软件&#xff0c;可以查看设备状态…

FTP(File Transfer Protocal,文件传输协议)

文章目录 引言FTP管理工具FTP客户端FTP连接模式控制连接数据连接FTP命令/响应FTP命令FTP响应FTPSSFTP引言 FTP(File Transfer Protocal,文件传输协议)用于建立两台主机间的数据文件传输下载。使用客户/服务器(Client/Server)架构,基于TCP协议,服务端口为21。 FTP链接…

React搭建Vite项目及各种项目配置

1. 创建Vite项目 在操作系统的命令终端&#xff0c;输入以下命令&#xff1a; yarn create vite 输入完成以后输入项目名称、选择开发框架&#xff0c;选择开发语言&#xff0c;如下图所示&#xff0c;即可完成项目创建。 注意事项&#xff1a; 1. Node版本必须符合要求&…

linux nginx 命令记录,和转发

nginx: 查看配置文件&#xff1a;sudo find / -name nginx.conf 配置文件&#xff1a;/etc/nginx/nginx.conf 检查nginx.conf文件正确性 nginx -t -c /path/to/nginx.conf 或者 有nginx命令执行 nginx -t 查找nginx 可执行文件&#xff1a;which nginx /usr/sbin/nginx 安装Ng…

比 Xshell 还好用的 SSH 客户端,MobaXterm 太酷了!

由于需要连接远程 Linux 服务器&#xff0c;早期使用过 Putty&#xff0c;SecureCRT&#xff0c;后面主要使用 Xshell。 自从接触了 MobaXterm之后&#xff0c;个人感觉比 Xshell 更好用&#xff0c;堪称SSH客户端的神器啊&#xff01; MobaXterm 和 Xshell 的关系&#xff0…

几个小创新模型,Transformer与SVM、LSTM、BiLSTM、Adaboost的结合,MATLAB分类全家桶再更新!...

截止到本期MATLAB机器学习分类全家桶&#xff0c;一共发了5篇&#xff0c;参考文章如下&#xff1a; 1.机器学习分类全家桶&#xff0c;模式识别&#xff0c;故障诊断的看这一篇绝对够了&#xff01;MATLAB代码 2. 再更新&#xff0c;机器学习分类全家桶&#xff0c;模式识别&a…

AI绘画:艺术与科技融合的新篇章

随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;AI绘画作为一种新兴的艺术形式&#xff0c;正逐步改变着传统艺术创作的格局。从早期的简单模仿到如今的个性化创作&#xff0c;AI绘画不仅提升了艺术创作的效率和质量&#xff0c;还开辟了全新的应用场景和商…

Temu卖家必读:测评补单策略,提升销量与转化率!

拼多多旗下的跨境电商平台Temu&#xff0c;凭借其独特的广告和低价策略&#xff0c;迅速在美国市场站稳脚跟&#xff0c;并在欧美市场取得初步成功后&#xff0c;马不停蹄地迈向了更广阔的海外市场。去年七月&#xff0c;Temu正式进军亚洲市场&#xff0c;日本与韩国成为其首批…

免费SSL证书的安全性与获取指南

SSL证书是一种数字凭证&#xff0c;用于加密用户与网站之间的信息交换&#xff0c;以确保传输的数据不被第三方窃取。它像是一个数字版的密封印章&#xff0c;为数据的传输过程提供了一层保护膜。 免费的SSL证书通常由CA机构提供&#xff0c;它们同样可以提供基础数据的加密服…

MATLAB基础:图像绘制

今天我们继续学习MATLAB中图像的绘制。 平面图形 plot(x,y)&#xff1a; x和y为长度相同的向量&#xff0c;分别用于存储x坐标和y坐标数据。 plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n)&#xff1a; 多组折线&#xff0c;可选择表示折线的属性&#xff0c;如颜色、线型…

Excel的“只读方式”有什么方法可以变为可直接编辑吗?

在日常工作中&#xff0c;我们经常遇到Excel文件被设置为“只读方式”的情况&#xff0c;这可能是由于文件权限设置、文件共享需要或文件被下载时自动设置为只读等多种原因造成的。然而&#xff0c;当需要修改或编辑这些文件时&#xff0c;我们就需要将其从“只读方式”转换为可…

LlamaIndex:向 LLM 添加个人数据

LlamaIndex 是您构建基于 LLM 的应用程序的友好数据助手。您可以使用自然语言轻松地获取、管理和检索私有数据和特定领域的数据。 LlamaIndex 是一个针对大型语言模型 (LLM) 应用程序的数据框架。GPT-4 等 LLM 在海量的公共数据集上进行预训练&#xff0c;开箱即用即可实现令人…

微凌客旅游管理系统uniapp源码搭建教程

一.搭建教程环境 系统环境&#xff1a;CentOS、 运行环境&#xff1a;宝塔 Linux 网站环境&#xff1a;Nginx 1.15.10 MySQL 5.6.46 PHP-7.1-7.3 常见插件&#xff1a;fileinfo &#xff1b; redis 三.系统搭建图片

优化算法|自适应大邻域搜索算法及MATLAB代码实现

回来填坑了&#xff0c;本篇推文将详细讲解ALNS算法求解VRP问题及MATLAB代码实现。 算法介绍 节约算法构造初始解 function routessaving_init(DistMatrix, Demand, Cap) C_EPS1e-1;Nsize(DistMatrix,1); routescell(numel(2:N),1); for i1:numel(routes) % 每个节点单独一条…

c生万物系列(继承)

上一节笔者用宏和文件模拟了封装&#xff0c;这一节笔者继续使用c语言模拟继承。 简单介绍就是&#xff1a;在结构体里面重新定义需要继承的结构体。 调用时&#xff0c;使用&obvir,可以想象我们定义数组*p&#xff0c;p表示该数组第一个成员&#xff0c;这是因为结构体声…

【教程】vscode添加powershell7终端

win10自带的 powershell 是1.0版本的&#xff0c;太老了&#xff0c;更换为powershell7后&#xff0c;在 vscode 的集成终端中没有显示本篇教程记录在vscode添加powershell7终端的过程 打开vscode终端配置 然后来到这个页面进行设置 查看 powershell7 的安装位置&#xff…