C语言斜向钥匙迷宫

news2025/1/11 6:07:04

目录

  • 开头
  • 程序的流程图
  • 程序的效果
  • 结尾

开头

大家好,我叫这是我58。今天,我们来看一下我用C语言编译的斜向钥匙迷宫和与之相关的一些东西。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <Windows.h>
void printmaze(const char strmaze[9][9], const int ia) {
	int iaa = 0;
	int ib = 0;
	for (iaa = 0; iaa < 9; iaa++) {
		for (ib = 0; ib < 9; ib++) {
			printf("\033[%sm%c", 'G' == strmaze[iaa][ib] ? "32;1" : '&' == strmaze[iaa][ib] || '#' == strmaze[iaa][ib] ? "33" : "0", strmaze[iaa][ib]);
		}
		printf("\033[0m|\n");
	}
	printf("---------@\n\033[33m钥匙总数 = %d\033[0m\n", (ia & 1) + !!(ia & 2));
}
int main() {
	int i = 0;
	int ia = 0b00;//0b00 = 0
	char ch = 0;
	char strmaze[9][9] = {
		"P* * *  *",
		"* * * **&",
		" ** * *  ",
		"** ** * *",
		"  *******",
		"**  * * *",
		"* **** * ",
		"  *  * **",
		"&* *  *#G"
	};
	char* cp = &strmaze[0][0];
	printf("欢迎你来玩这个\033[33m斜向钥匙迷宫\033[0m,在这个迷宫中,“P”是你,\033[32;1m“G”\033[0m是\033[32;1m终点\033[0m,而“*”是墙,空格是你可以走的地方,“w”往上走,“a”往左走,“s”往下走,“d”往右走,“q”往左上走,“e”往右上走,“z”往左下走,“c”往右下走,而你只要用你收集的全部的\033[33m钥匙“&”(总共有2把)\033[0m打开\033[33m门“#”\033[0m来走到\033[32;1m终点\033[0m就可以了,这就是这个\033[33m斜向钥匙迷宫\033[0m的规则");
	Sleep(6600);
	system("cls");
	while ('G' == strmaze[8][8]) {
		('&' != strmaze[1][8] && !(ia & 1)) && ia++;
		('&' != strmaze[8][0] && !(ia & 2)) && (ia += 2);//2 = 0b10
		printmaze(strmaze, ia);
		scanf("%c", &ch);
		while ('\n' != getchar()) {
			;
		}
		*cp = ' ';
		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 'q':
			for (i = 0; i < 9; i++) {
				if (cp == &strmaze[i][0] || cp == &strmaze[0][i]) {
					break;
				}
			}
			(9 == i && '*' != *(cp - 10) && '#' != *(cp - 10)) && (cp -= 10);
			break;
		case 'e':
			for (i = 0; i < 9; i++) {
				if (cp == &strmaze[i][8] || cp == &strmaze[0][i]) {
					break;
				}
			}
			(9 == i && '*' != *(cp - 8) && '#' != *(cp - 8)) && (cp -= 8);
			break;
		case 'z':
			for (i = 0; i < 9; i++) {
				if (cp == &strmaze[i][0] || cp == &strmaze[8][i]) {
					break;
				}
			}
			(9 == i && '*' != *(cp + 8) && '#' != *(cp + 8)) && (cp += 8);
			break;
		case 'c':
			for (i = 0; i < 9; i++) {
				if (cp == &strmaze[i][8] || cp == &strmaze[8][i]) {
					break;
				}
			}
			(9 == i && '*' != *(cp + 10) && '#' != *(cp + 10)) && (cp += 10);
			(3 == ia && cp == &strmaze[7][6]) && (strmaze[8][7] = ' ');
			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
定义整型ia为0b00(0b00 = 0)
定义字符ch为0
定义二维数组strmaze为下面的图片

2 = 0b10
等待6.6秒,等待好之后就清屏
是(break)
break
清屏
是(break)
break
是(break)
break
是(break)
break
是(break)
break
是(break)
break
是(break)
break
是(break)
break
否(break)
否(break)
否(break)
否(break)
否(break)
否(break)
否(break)
否(break)
否(break)
'&' != strmaze[8][0] && !(ia & 2)?
ia自增2
定义字符指针ch为二维字符数组strmaze第0行第0列的元素的地址
输出“欢迎你来玩这个\​033[33m斜向钥匙迷宫\​033[0m,在这个迷宫中,“P”是你,\​033[32;1m“G”\​033[0m是\​033[32;1m终点\​033[0m,而“*”是墙,空格是你可以走的地方,“w”往上走,“a”往左走,“s”往下走,“d”往右走,“q”往左上走,“e”往右上走,“z”往左下走,“c”往右下走,而你只要用你收集的全部的\​033[33m钥匙“&”(总共有2把)\​033[0m打开\​033[33m门“#”\​033[0m来走到\​033[32;1m终点\​033[0m就可以了,这就是这个\​033[33m斜向钥匙迷宫\​033[0m的规则”
'G' == strmaze[8][8]?
'&' != strmaze[1][8] && !(ia & 1)?
ia自增1
执行printmaze函数,参数有二维字符数组strmaze和整型ia
把字符ch设为你输入的字符
'\​n' != getchar()?
把解引用的cp设为空格
'w' == ch?
设i为0
i < 9?
cp == &strmaze[0][i]?
9 == i && '*' != *(cp - 9) && '#' != *(cp - 9)?
把cp向左移动9位
把解引用的cp设为“P”
把窗口的背景色设为黑色,前景色设为淡绿色
结束
'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 + 9) && '#' != *(cp + 9)?
把cp向右移动9位
'd' == ch?
设i为0
i < 9?
cp == &strmaze[i][8]?
9 == i && '*' != *(cp + 1) && '#' != *(cp + 1)?
把cp向右移动一位
'q' == ch?
设i为0
i < 9?
cp == &strmaze[i][0] || cp == &strmaze[0][i]?
9 == i && '*' != *(cp - 10) && '#' != *(cp - 10)?
把cp向左移动10位
'e' == ch?
设i为0
i < 9?
cp == &strmaze[i][8] || cp == &strmaze[0][i]?
9 == i && '*' != *(cp - 8) && '#' != *(cp - 8)?
把cp向左移动8位
'z' == ch?
设i为0
i < 9?
cp == &strmaze[i][0] || cp == &strmaze[8][i]?
9 == i && '*' != *(cp + 8) && '#' != *(cp + 8)?
把cp向右移动8位
'c' == ch?
设i为0
i < 9?
cp == &strmaze[i][8] || cp == &strmaze[8][i]?
9 == i && '*' != *(cp + 10) && '#' != *(cp + 10)?
把cp向右移动10位
3 == ia && cp == &strmaze[7][6]?
把二位字符数组strmaze第8行第7列的元素设为空格
i自增1
i自增1
i自增1
i自增1
i自增1
i自增1
i自增1
i自增1
printmaze函数
结束
开始
定义整型iaa为0
定义整型ib为0
设iaa为0
iaa < 9?
设ib为0
ib < 9?
输出“\​033[%sm%c”(如果“G”为常量二维字符数组sytmaze第iaa行第ib列的元素,那么“%s”代“32;1”,否则如果“&”或者“#”为常量二维字符数组sytmaze第iaa行第ib列的元素,那么“%s”代“33”,否则代“0”,而“%c”则代常量二维字符数组strmaze第iaa行第ib列的元素)
ib自增1
输出“\​033[0m|\​n”
iaa自增1
输出“---------@\​n\​033[33m钥匙总数 = %d\​033[0m\​n”(“%d”代常量ia按位与1加上常量ia按位与2的逻辑值的和)

程序的效果

斜向钥匙迷宫

结尾

在你看到这里之后,可以评论来互动一下我哦,当然,不评论对我也没有什么太大的关系。

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

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

相关文章

数据结构算法-排序(二)

插入排序 插入排序核心 假设数组中的一部数据已经排好序&#xff0c;要插入的数据和这些数据进行比较&#xff0c;直到找到合适的位置插入新数据。 插入排序步骤 插入排序主要有以下步骤构成&#xff1a; 假设有序&#xff0c;我们假设**a[0]**已经排好序待插入的数据为a[j]…

Windows蓝屏问题解决(电脑只要安装了VPN_SV独立客户端)必蓝屏

一、SERNEL_SECURITY_CHECK_FAILURE (139) 蓝屏分析 官方介绍蓝屏现象&#xff0c;官方Windows为了保护电脑&#xff0c;出现故障&#xff0c;自动蓝屏&#xff0c;避免损坏电脑的一种现象&#xff0c;别名buckcheck、蓝屏。 100%复现软件&#xff1a;天融信VPN&#xff0c;同事…

AI赋能交通治理:非机动车监测识别技术在城市街道安全管理中的应用

引言 城市交通的顺畅与安全是城市管理的重要组成部分。非机动车如自行车、电动车、摩托车等在城市交通中扮演着重要角色&#xff0c;但同时也带来了管理上的挑战。尤其是在机动车道上误入非机动车的现象&#xff0c;不仅影响交通秩序&#xff0c;还可能引发交通事故。思通数科…

C#插件 调用存储过程(输出参数类型)

存储过程 CREATE PROCEDURE [dbo].[GetSum]num1 INT,num2 INT,result INT OUTPUT AS BEGINselect result num1 num2 END C#代码 using Kingdee.BOS; using Kingdee.BOS.App.Data; using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Util; using System; using System.…

3分钟认识KTX2纹理

作者&#xff1a;游梦 图片与纹理区别 日常沟通中通常把图片与纹理混为一谈&#xff0c;实际在图形学中&#xff0c;它俩是严格意义上的两个对象&#xff0c;主要有以下两个方面的区别&#xff1a; 文件格式&#xff1a; 图片&#xff1a;JPG、JPEG、PNG、bmp、webp、SVG等常…

gstreamer 配置+解析编解码

一. 安装gstreamer 1.1 Windows下安装 官网链接&#xff1a;https://gstreamer.freedesktop.org/download/#windows 两个都要下载。安装的时候&#xff0c;在custom选择安装路径。然后返回上一步选择complete完全安装&#xff0c;两个安装方式一样。 1.2 配置环境 将 D:\…

python3 pyside6图形库学习笔记及实践(二)

目录 前言常用控件下拉框(QComboBox)复选框(QCheckBox)单选框(QRadioButton)文本框(QTextEdit和QPlainTextEdit)滑块(QSlider) 布局常见布局控件示例布局的好处 对话框消息框(QMessageBox)输入对话框(QInputDialog)文件对话框(QFileDialog)字体对话框(QFontDialog)颜色对话框(Q…

一文精通Python print函数的N种玩法

文末赠免费精品编程资料~~ 今天我们要探索的是编程世界中最常被忽略的英雄——print函数。别看它简单&#xff0c;其实藏着不少有趣的玩法和高级技巧&#xff0c;能让你的代码更加灵活和高效。准备好了吗&#xff1f;让我们一起深入这个看似平凡却又不凡的功能。 基础篇&…

SuperGlue网络+FPN+SIFT(特征匹配)

SuperGlue网络+FPN+SIFT(特征匹配) 摘要1. FPNFPN具体实现思路2. SIFT2.1 尺度空间极值检测2.1.1 尺度空间2.1.2 高斯金字塔2.1.4 局部极值检测2.2 精确的关键点定位2.2.1 消除边缘响应2.2.2 确定关键点(极值点)方向2.3 关键点描述2.4 关键点匹配2.5 SIFT代码实现2.6 SIFT的…

贪心算法-买卖股票问题

贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是全局最好或最优的算法。贪心算法并不保证总是能得到全局最优解&#xff0c;但它通常能得到不错的解…

新版PyTorch:AI任务加速与Intel GPU集成

--->更多内容&#xff0c;请移步“鲁班秘笈”&#xff01;&#xff01;<--- 最近的Pytorch 2.4 推出AI任务加速&#xff0c;提供对Intel GPU的支持。为了进一步加速 AI任务&#xff0c;PyTorch 2.4现在为Intel数据中心GPU Max系列提供支持&#xff0c;该系列将Intel GPU…

Java答题系统练习模拟考试系统

&#x1f4dd;【学霸秘籍】答题系统模拟考试系统&#xff0c;你的提分神器来啦&#xff01;&#x1f680; &#x1f4da; 开篇引入&#xff1a;学习路上的得力助手 嘿&#xff0c;小伙伴们&#xff01;是不是又在为即将到来的考试焦头烂额&#xff1f;&#x1f623; 是不是觉…

二分查找(多版本)

1.基础版 public class erfenchazhao {public int test(int arr[],int target){int i 0; //定义左指针int j arr.length-1;//定义右指针int m; //定义中间值while(i<j){ //判断条件m (ij)>>>1;if(target < arr[m]){ //目标值在左边j m - 1;}else…

【python】在Python代码中执行Linux命令的详细用法教程

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

昇思25天学习打卡营第01天|昇思MindSpore大模型基础介绍

昇思MindSpore和华为昇思MindSpore大模型学习打卡系列文章&#xff0c;本文仅供参考~ 文章目录 前言一、昇思MindSpore是什么&#xff1f;二、执行流程三、设计理念四、层次结构五、Huawei昇腾AI全栈 前言 随着计算机大模型的不断发展&#xff0c;Ai这门技术也越来越重要&#…

免费【2024】springboot 宠物领养救助平台的开发与设计

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

Prozyme糖样本检测平台--GlykoPrep® Rapid N-Glycan Preparation with APTS

单克隆抗体已成为生物制药行业具有潜力的新兴蛋白候选药物。其药物研发流程包括一系列精细的控制和评估步骤&#xff0c;需要仔细、严格地监测目标化合物的治疗稳定性及有效性。因此&#xff0c;在商业化前的每个阶段对单克隆抗体进行全面表征是极其有益的。在大量研究成熟的蛋…

用Python打造精彩动画与视频,3.1 安装和设置 MoviePy

第3章 开始你的第一个视频项目 MoviePy 3.1 安装和设置 MoviePy 视频处理在多媒体内容创作中起着至关重要的作用。MoviePy 是一个用于视频编辑的 Python 库&#xff0c;它可以让你轻松地进行视频剪辑、合并、特效添加等操作。通过 MoviePy&#xff0c;你可以用简单的 Python…

基于Java+SpringBoot+Vue的的课程作业管理系统

前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 哈喽兄弟们&#xff0c;好久不见哦&#xff5…

IEEE 快刊合集!期刊选的好,JCR1区照样轻松拿下~

【SciencePub学术】今天小编给大家推荐2本计算机领域的SCI&#xff0c;均隶属于IEEE出版社&#xff0c;虽比不上前几日给大家介绍的IEEE-Trans系列的那本期刊优秀&#xff0c;但是放在行业内还是很拿得出手的。 现在提交&#xff0c;可免费预审&#xff0c;预审通过后录用率100…