当前位置: 首页 > news >正文

C++门迷宫

目录

  • 开头
  • 程序
  • 程序的流程图
  • 程序游玩的效果
  • 下一篇博客要说的东西

开头

大家好,我叫这是我58。

程序

#include <iostream>
using namespace std;
void printmaze(const char strmaze[11][11]) {int i = 0;int ia = 0;for (; i < 11; i++) {for (ia = 0; ia < 11; ia++) {cout << "\033[" << ('0' == strmaze[i][ia] ? "33" : 'G' == strmaze[i][ia] ? "32;1" : "0") << "m" << strmaze[i][ia] << "\033[0m";}cout << "|" << endl;}cout << "-----------@" << endl;
}
int main() {char strmaze[11][11] = {'P','0','*','0','*','0','0',' ','0',' ',' ',' ',' ','*',' ','*',' ',' ','0',' ',' ',' ','*','*','*',' ','*',' ','*',' ','*',' ',' ','0',' ','*',' ','*','0','*',' ',' ',' ',' ',' ',' ','*',' ',' ',' ','0','*','*','*',' ',' ','0','*',' ','0','0',' ','*',' ','*','*',' ',' ','*','*',' ',' ','0','*','*','*','0',' ',' ','*','0','*',' ',' ','*',' ',' ',' ','0',' ','*',' ','*',' ','*',' ',' ','*','0',' ',' ','*',' ','*','*','*','0',' ','*',' ',' ',' ','*',' ',' ','0',' ',' ',' ','*','G',};char* cp = &strmaze[0][0];char ch = 0;int i = 0;bool bpw = 0;int doorarr[36] = {0,1,3,0,5,1,0,8,8,0,0,3,3,5,4,6,1,7,0,5,0,6,6,6,5,5,9,7,6,10,8,10,5,4,7,3};cout << "欢迎你来玩这个\033[33m门\033[0m迷宫,在这个迷宫中,“P”是你,“*”是墙,你不能走到这,空格是你可以走的地方,“w”使你上移,“a”使你左移,“s”使你下移,“d”使你右移,而\033[32;1m“G”\033[0m是\033[32;1m终点\033[0m,走到这能让你\033[32;1m胜利\033[0m,并且,\033[33m“0”\033[0m是\033[33m门\033[0m,按“\033[33mz\033[0m”键进入就可以走到\033[33m另外一扇门\033[0m的前面。这就是这迷宫的规则,你听明白了吗?" << endl << endl;system("pause");system("cls");while ('G' == strmaze[10][10]) {int ix = (cp - &strmaze[0][0]) / 11;int iy = (cp - &strmaze[0][0]) % 11;printmaze(strmaze);cin >> ch;rewind(stdin);*cp = ' ';switch (ch) {case 'w':ix && '*' != *(cp - 11) && '0' != *(cp - 11) && (cp -= 11);bpw = 1;break;case 'a':iy && '*' != *(cp - 1) && '0' != *(cp - 1) && (cp--);bpw = 0;break;case 's':10 != ix && '*' != *(cp + 11) && '0' != *(cp + 11) && (cp += 11);bpw = 0;break;case 'd':10 != iy && '*' != *(cp + 1) && '0' != *(cp + 1) && (cp++);bpw = 0;break;case 'z':if (bpw) {for (i = 0; i < 36; i += 2) {if (ix - 1 == doorarr[i] && iy == doorarr[i + 1]) {if (i / 2 % 2) {cp = &strmaze[doorarr[i - 2] + 1][doorarr[i - 1]];}else {cp = &strmaze[doorarr[i + 2] + 1][doorarr[i + 3]];}}}}break;default:break;}*cp = 'P';system("cls");}system("color 0A");cout << "恭喜你,你赢了" << endl;return 0;
}

程序的流程图

开始
导入io流
释放std作用域下的全部东西
定义printmaze函数
把二维字符数组strmaze初始化为下面的图片

等待用户按下任意一个键,按下后就清屏
break
清屏
break
break
break
否(break)
否(break)
否(break)
定义字符指针cp为二维字符数组strmaze第0行第0列的地址
定义字符ch为0
定义整型i为0
定义布尔型bpw为0
把有36个元素的整型数组doorarr里的元素分别为初始化为0,1,3,0,5,1,0,8,8,0,0,3,3,5,4,6,1,7,0,5,0,6,6,6,5,5,9,7,6,10,8,10,5,4,7和3
输出“欢迎你来玩这个\​033[33m门\​033[0m迷宫,在这个迷宫中,“P”是你,“*”是墙,你不能走到这,空格是你可以走的地方,“w”使你上移,“a”使你左移,“s”使你下移,“d”使你右移,而\​033[32;1m“G”\​033[0m是\​033[32;1m终点\​033[0m,走到这能让你\​033[32;1m胜利\​033[0m,并且,\​033[33m“0”\​033[0m是\​033[33m门\​033[0m,按“\​033[33mz\​033[0m”键进入就可以走到\​033[33m另外一扇门\​033[0m的前面。这就是这迷宫的规则,你听明白了吗?\​n\​n”
'G' == strmaze[10][10]?
定义整型ix为cp与二维字符数组strmaze第0行第0列的地址之间的元素个数除以11的结果
定义整型iy为cp与二维字符数组strmaze第0行第0列的地址之间的元素个数模上11的结果
执行printmaze函数,参数有二维字符数组strmaze
把ch设为你输入的字符
清空缓冲区
把解引用的cp设为空格
'w' == ch?
ix && '*' != *(cp - 11) && '0' != *(cp - 11)?
把cp向左移动11位
把bpw设为1
把解引用的cp设为字符“P”
把背景色设为黑色,前景色设为淡绿色
输出“恭喜你,你赢了\​n”
结束
'a' == ch?
iy && '*' != *(cp - 1) && '0' != *(cp - 1)?
把cp向左移动一位
把bpw设为0
's' == ch?
10 != ix && '*' != *(cp + 11) && '0' != *(cp + 11)?
把cp向右移动11位
把bpw设为0
'd' == ch?
10 != iy && '*' != *(cp + 1) && '0' != *(cp + 1)?
把cp向右移动一位
把bpw设为0
'z' == ch?
bpw?
设i为0
i < 36?
ix - 1 == doorarr[i] && iy == doorarr[i + 1]?
i / 2 % 2?
把cp设为二维字符数组strmaze第整型数组doorarr的第i减2项加1的值行第整型数组doorarr的第i减1项的值列的地址
i自增2
把cp设为二维字符数组strmaze第整型数组doorarr的第i加2项加1的值行第整型数组doorarr的第i加3项的值列的地址
printmaze函数
结束
开始
定义整型i为0
定义整型ia为0
i < 11?
设ia为0
ia < 11?
前面输出“\​033[”,如果“0”为二维字符数组strmaze第i行第ia列的元素,那么中间输出“33”,否则如果“G”为二维字符数组strmaze第i行第ia列的元素,那么中间就输出“32;1”,否则中间就输出“0”,后面则输出“m”,二维字符数组strmaze第i行第ia列的元素和“\​033[0m”
ia自增1
输出“|\​n”
i自增1
输出“-----------@\​n”

程序游玩的效果

门迷宫

下一篇博客要说的东西

C++两点成一线

相关文章:

C++门迷宫

目录 开头程序程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好&#xff0c;我叫这是我58。 程序 #include <iostream> using namespace std; void printmaze(const char strmaze[11][11]) {int i 0;int ia 0;for (; i < 11; i) {for (ia 0; ia <…...

用最通俗易懂的语言和例子讲解三维点云

前言&#xff1a; 我整体的学习顺序是看的按B站那“唯一”的三维点云的视频学习的&#xff08;翻了好久几乎没有第二个...&#xff09;对于深度学习部分&#xff0c;由于本人并没有进行学习&#xff0c;所以没有深究。大多数内容都进行了自己的理解并找了很多网络的资源方便理解…...

VM虚拟机下载以及激活

传统的官网已经找不到下载了&#xff0c;这里我将下载好的放在阿里云盘&#xff0c;百度云盘太慢了&#xff0c;懂得都得 阿里云盘分享 下载好了后会是一个exe文件&#xff0c;直接双击运行就可 下载无脑下一步即可&#xff0c;这里不做介绍 下载好了后&#xff0c;需要密钥这里…...

详解Ajax与axios的区别

Ajax与Axios在Web开发中都是用于发送HTTP请求的技术&#xff0c;但它们在多个方面存在显著的差异。以下是对两者区别的详细解析&#xff1a; 1. 技术原理 Ajax&#xff1a;Asynchronous JavaScript and XML&#xff08;异步JavaScript和XML&#xff09;的缩写&#xff0c;是一…...

golang学习笔记28——golang中实现多态与面向对象

推荐学习文档 golang应用级os框架&#xff0c;欢迎stargolang应用级os框架使用案例&#xff0c;欢迎star案例&#xff1a;基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识&#xff0c;这里有免费的golang学习笔…...

运行 xxxxApplication 时出错。命令行过长。 通过 JAR 清单或通过类路径文件缩短命令行,然后重新运行。

一、问题描述 运行 xxxxApplication 时出错。命令行过长。 通过 JAR 清单或通过类路径文件缩短命令行&#xff0c;然后重新运行。 二、问题分析 在idea中&#xff0c;运行一个springboot项目&#xff0c;在使用大量的库和依赖的时候&#xff0c;会出现报错“命令行过长”&…...

k8s自动清理pod脚本分享

检查会遇到集群节点内存消耗超过90%&#xff0c;我们可以筛选一些可以进行重启的pods&#xff0c;如脚本中涉及svc-开头的&#xff0c;进行触发即重启的shell编写。此项会涉及metrics组件需要安装。 #!/bin/bash# 设置内存使用率阈值为90% MEMORY_THRESHOLD90# 初始化一个数组…...

Go并发编程的高级技巧——请求复制与限流

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在一些高性能应用场景中,快速响应是非常重要的目标。例如,当一个应用需要快速响应用户的HTTP请求,或从多个副本中检索数据时,如何优化请求处理成为关键。本文将讨论如何在Go语言中,通过并发和限流机制来实现…...

网站建设模板选择哪种

在选择网站建设模板时&#xff0c;需要考虑多个因素&#xff0c;包括网站的目的、受众、内容类型以及个性化需求等。以下是一些常见的网站建设模板类型&#xff0c;以及它们的特点&#xff0c;希望对你的选择有所帮助。 企业/商务模板&#xff1a; 企业和商务网站通常需要专业、…...

【linux】kill命令

kill 命令在 Linux 和类 Unix 系统中用于向进程发送信号&#xff0c;默认情况下是发送 SIGTERM&#xff08;信号 15&#xff09;&#xff0c;请求程序终止运行。如果程序没有响应 SIGTERM 信号&#xff0c;可以使用 SIGKILL&#xff08;信号 9&#xff09;强制终止进程&#xf…...

Python基础 | 在虚拟环境中安装并在指定文件夹中打开Jupyter notebook

在虚拟环境中安装并在指定文件夹中打开Jupyter notebook 前言一、在虚拟环境下安装Jupyter notebook二、在指定路径下打开Jupyter notebook 前言 Jupyter Notebook 是一个基于 Web 的交互式计算环境&#xff0c;主要功能是将代码、文本、数学方程式、可视化和其他相关元素组合…...

1.Spring-容器-注册

一、Bean和获取Bean &#xff08;1&#xff09;创建IoC容器&#xff1a; SpringApplication.run(类名.class, args); ConfigurableApplicationContext ioc SpringApplication.run(Spring01IocApplication.class, args); &#xff08;2&#xff09;将对象注册到IoC容器中&am…...

Mapper.xml SQL大于小于号转义符

Mapper.xml中写的SQL语句&#xff0c;大于小于号字符直接写会报错&#xff0c;需要变成转义字符 对应如下&#xff1a; Mapper.xml SQL大于小于号转义符...

Linux:进程(三)——进程状态

目录 Linux源代码对进程的描述 R S D T t X Z&#xff08;进程僵尸&#xff09; 孤儿进程 Linux源代码对进程的描述 理论上把进程状态大致被分为了&#xff1a;运行、阻塞、挂起。那么&#xff0c;在操作系统中具体是如何描述状态的。&#xff08;有时候Linux内核也把…...

Effective Java 学习笔记 如何为方法编写文档

目录 方法的文档注解设计的原则 Javadoc常用的文档注释 一些注意细节 通过Javadoc命令生成h5页面 这是第8章Java方法的最后一部分&#xff0c;聚焦为导出的API编写文档注释。 如果要想使得API真正可用&#xff0c;配套的文档是必须的。Java提供了Javadoc这个文档生成工具&…...

TCP四大拥塞控制算法总结

四大算法&#xff1a;1.慢启动&#xff0c;2.拥塞避免&#xff0c;3.拥塞发生&#xff0c;4.快速恢复。 慢启动&#xff1a; 首先连接建好的开始先初始化拥塞窗口cwnd大小为1&#xff0c;表明可以传一个MSS大小的数据。 每当收到一个ACK&#xff0c;cwnd大小加一&#xff0c…...

深入解析ElasticSearch从基础概念到性能优化指南

一.引言 ElasticSearch是一个分布式的搜索和分析引擎&#xff0c;专为处理大规模的结构化和非结构化数据而设计。它建立在Apache Lucene之上&#xff0c;提供了强大的全文搜索能力、高可用性和实时分析的功能。无论是作为日志分析平台&#xff0c;还是作为数据驱动的应用程序的…...

git分支合并时忽略指定文件

分支合并忽略特定文件步骤 1.在项目根目录下cmd窗口运行以下命令 git config merge.ours.driver true2.在项目根目录下新建文件.gitattributes然后文件中写入需要忽略的文件名 mergeours, 一个文件占一行 Dockerfile mergeours /nginx/default.conf mergeours...

基于微信小程序的童装商城的设计与实现+ssm(lw+演示+源码+运行)

童装商城小程序 摘 要 随着移动应用技术的发展&#xff0c;越来越多的用户借助于移动手机、电脑完成生活中的事务&#xff0c;许多的传统行业也更加重视与互联网的结合&#xff0c;由于城镇人口的增加&#xff0c;人们去商场购物总是排着长长的队伍&#xff0c;对于时间紧的人…...

什么叫后验分布

后验分布&#xff08;Posterior Distribution&#xff09;是在贝叶斯统计中一个重要的概念。它指的是在观测到数据之后&#xff0c;对参数或潜变量的分布的更新。具体来说&#xff0c;后验分布是基于先验分布&#xff08;Prior Distribution&#xff09;和似然函数&#xff08;…...

Spring Boot 2026教育技术演示项目全栈架构与工程实践解析

1. 项目概述&#xff1a;一个面向未来的教育技术演示 最近在整理开源项目时&#xff0c;我注意到了 holzerjm/GACEP-Spring-2026-demo 这个仓库。乍一看&#xff0c;这个标题信息量不小&#xff0c;它像是一个技术演示&#xff0c;但前缀 GACEP 和 Spring-2026 又透露出…...

国际空间站工程知识共享:从太空协作到地面工程实践的启示

1. 国际空间站&#xff1a;一个工程师眼中的知识共享金矿作为一名在航天工程领域摸爬滚打了十几年的工程师&#xff0c;我常常被问到一个问题&#xff1a;耗资巨大的国际空间站&#xff08;ISS&#xff09;&#xff0c;除了那些遥不可及的太空探索梦想&#xff0c;到底给我们这…...

华为OD机试真题 新系统 2026-05-06 JavaGoC语言 实现【匹配命令行前缀关键字】

目录 题目 思路 Code 题目 给定一组命令行字符串和一个命令前缀&#xff0c;需要找出所有以前缀开头的命令行表达式中&#xff0c;前缀之后的第一个关键字&#xff0c;并将这些关键字按字典序排序后返回。 如果找不到匹配前缀则返回空&#xff1b;匹配出多个相同关键字时只返…...

KMS_VL_ALL_AIO架构解析:Windows与Office智能激活的技术方案

KMS_VL_ALL_AIO架构解析&#xff1a;Windows与Office智能激活的技术方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO KMS_VL_ALL_AIO是一款基于KMS协议实现的Windows和Office智能激活解决方案…...

004 LVGL应用场景与案例概览

004 LVGL应用场景与案例概览 上周帮一个做智能家居的朋友调屏,他用的STM32F407+4.3寸RGB屏,LVGL跑得挺欢,但一加上WiFi联网和MQTT协议栈,屏幕刷新就开始卡顿,触摸响应延迟明显。我打开他的代码一看,好家伙,lv_task_handler()直接放在主循环里裸奔,没有任何优先级管理。…...

Vulkan学习笔记

顺序很重要&#xff1a;#define 必须在 #include <GLFW/glfw3.h> 之前出现&#xff0c;否则不起作用。作用&#xff1a;当 GLFW 的头文件看到这个宏被定义后&#xff0c;它就会知道你需要 Vulkan 支持&#xff0c;并自动执行 #include <vulkan/vulkan.h>&#xff0…...

Unlock Music:3种创新用法让你重新掌控被加密的音乐收藏

Unlock Music&#xff1a;3种创新用法让你重新掌控被加密的音乐收藏 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地址: htt…...

苹果W1芯片如何通过低功耗无线技术重塑TWS耳机体验

1. 无线音频的功耗困局与苹果的破局思路 2016年9月&#xff0c;当苹果在发布会上首次亮出那对剪掉线缆的AirPods时&#xff0c;整个消费电子行业都在问同一个问题&#xff1a;它是怎么做到的&#xff1f;更具体地说&#xff0c;它如何解决了无线耳机领域最核心、也最令人头疼的…...

中国科学院发布类脑大模型瞬悉2.0,打破长序列与低功耗部署核心瓶颈

来源&#xff1a;ScienceAI 本文约3000字&#xff0c;建议阅读5分钟验证了类脑机制与高效模型架构结合的广阔前景。当前&#xff0c;大模型发展正从「参数和数据规模驱动」逐步延展至「上下文能力驱动」。在智能体、代码理解、长文档分析等应用中&#xff0c;模型需要处理数十万…...

Git 入门教程:从命令行到 IDE 集成

文章目录Git 入门教程&#xff1a;从命令行到 IDE 集成一、环境准备与初始配置1.1 安装 Git1.2 配置用户身份2.2 查看仓库状态2.3 添加文件到暂存区2.4 提交文件到本地仓库2.5 查看历史版本2.6 版本回退2.7 删除文件三、Git 分支操作&#xff08;多人协作核心&#xff09;3.1 分…...