迷宫游戏 堆栈实现

#include<iostream>
#include<string>
#include<stack>
using namespace std;
#define n 8stack <int *> s;int * createMaze(){//初始化迷宫int i,j;int * a;a=new int[n*n];for(i=0;i<n;i++){for(j=0;j<n;j++){*(a+n*i+j)=-1;//不设置为0的原因是超过矩阵范围的位置}				//系统默认的是0,会引起麻烦}*(a+n*0+1)=3;s.push(a+n*0+1);//当前位置入栈*(a+n*1+1)=1;*(a+n*1+2)=1;*(a+n*1+3)=1;*(a+n*1+5)=1;*(a+n*2+3)=1;*(a+n*2+4)=1;*(a+n*2+5)=1;*(a+n*2+6)=1;*(a+n*3+1)=1;*(a+n*3+2)=1;*(a+n*3+3)=1;*(a+n*3+5)=1;*(a+n*4+1)=1;*(a+n*4+4)=1;*(a+n*5+1)=1;*(a+n*5+2)=1;*(a+n*5+4)=1;*(a+n*5+5)=1;*(a+n*5+6)=1;*(a+n*6+2)=1;*(a+n*6+3)=1;*(a+n*6+4)=1;*(a+n*6+6)=1;*(a+n*7+6)=1;return a;
}
//程序中标记-1,1,2,3,4的值表示意义例如以下:
//-1:障碍物(方块)
//1:可行走的通道且还未曾被五角星通过
//2:五角星走过的通道(这样说不全然准确)。更准确的说是已经压栈的元素(地址)
//3:标识五角星
//4:遇到再也走不通的位置,离开时所填充的障碍(与-1的作用同样,可是不显示出来)void printMaze(int * a){//打印迷宫int i,j;for(i=0;i<n;i++){for(j=0;j<n;j++){if(*(a+n*i+j)==1||*(a+n*i+j)==2||*(a+n*i+j)==4){cout<<"  ";}else if(*(a+n*i+j)==3){cout<<"★";}else{//*(a+n*i+j)==-1cout<<"■";}}cout<<endl;}
}void run(int * a,char ch){int i,j;for(i=0;i<n;i++){for(j=0;j<n;j++){if(*(a+n*i+j)==3){switch(ch){case 'w':if(*(a+n*(i-1)+j)==1){*(s.top())=2;s.push(a+n*(i-1)+j);//入栈*(s.top())=3;}if(*(a+n*(i-1)+j)==2){*(s.top())=-1;s.pop();//出栈*(s.top())=3;}return;case 'a':if(*(a+n*i+j-1)==1){*(s.top())=2;s.push(a+n*i+j-1);//入栈*(s.top())=3;}if(*(a+n*i+j-1)==2){*(s.top())=-1;s.pop();//出栈*(s.top())=3;}return;case 's':if(*(a+n*(i+1)+j)==1){*(s.top())=2;s.push(a+n*(i+1)+j);//入栈*(s.top())=3;}if(*(a+n*(i+1)+j)==2){*(s.top())=-1;s.pop();//出栈*(s.top())=3;}return;case 'd':if(*(a+n*i+j+1)==1){*(s.top())=2;s.push(a+n*i+j+1);//入栈*(s.top())=3;}if(*(a+n*i+j+1)==2){*(s.top())=-1;s.pop();//出栈*(s.top())=3;}return;}}}}
}char getDirection(int * a){//得到方向int i,j;for(i=0;i<n;i++){for(j=0;j<n;j++){if(*(a+n*i+j)==3){//必须按优先级排列if(*(a+n*i+j+1)==1){return 'd';}if(*(a+n*(i+1)+j)==1){return 's';}if(*(a+n*i+j-1)==1){return 'a';}if(*(a+n*(i-1)+j)==1){return 'w';}if(*(a+n*i+j+1)==2){return 'd';}if(*(a+n*(i+1)+j)==2){return 's';}if(*(a+n*i+j-1)==2){return 'a';}if(*(a+n*(i-1)+j)==2){return 'w';}else{cout<<"无效按键"<<endl;}}}}
}int handle(){int * a;int count=1;string step;//用string是为了避免用户多输入字符而引起错误a=createMaze();printMaze(a);cout<<"请按随意键进行下一步!"<<endl;while(*(a+n*7+6)!=3){cout<<"第"<<count<<"步:";cin>>step;run(a,getDirection(a));printMaze(a);count++;}cout<<"恭喜你,顺利到达终点!"<<endl;return 0;
}int main(){handle();return 0;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

转载于:https://www.cnblogs.com/blfshiye/p/4936551.html

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

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

相关文章

威海职业学院计算机专业宿舍,2021年威海职业学院新生宿舍条件和宿舍环境图片...

每年高考结束后&#xff0c;威海职业学院新生被录取同学们陆续都到校报到~而宿舍作为同学们朝夕相处之场所&#xff0c;如果不懂相处之道&#xff0c;难免会摩擦不断&#xff0c;更有甚者堪比宫斗大戏。所以各位大学新生一定要珍惜室友之间的友情&#xff0c;彼此处好关系。本文…

PostgreSQL 函数调试、诊断、优化 auto_explain

PostgreSQL 函数调试 & auto_explain 作者 digoal 日期 2016-11-21 标签 PostgreSQL , pldebugger , 函数调试 , auto_explain 背景 PostgreSQL的服务端编程能力比较强&#xff0c;不仅支持像java, R, python这种流行的编程语言&#xff0c;另外还内置了一个与Oracle plsql…

判断请求来自手机还是PC

由于小程序和PC端用的是同一个后台 所以就需要判断请求是从哪里发过来的 在这里是利用Request Body 里面的user-agent 来判断 /** * 根据当前请求的特征&#xff0c;判断该请求是否来自手机终端&#xff0c;主要检测特殊的头信息&#xff0c;以及user-Agent这个header * * pa…

小旭的互联网营销之微信营销

11月1日&#xff0c;一篇题为《什么样的女黑客竟遭马云强东在双11联手封杀?》的文章&#xff0c;借助双11火热的关注效应&#xff0c;在短短两天时间内刷爆朋友圈。 该文章的女主角不仅外表靓丽&#xff0c;黑客技术更是惊艳&#xff1a;“作为美籍华人的Joanna在2015黑帽子会…

计算机专业录取分数及大学排名,计算机专业录取分数最高的大学有哪些?附排名前50大学名单...

高考结束之后&#xff0c;不少即将迎接高考的家长对于很多专业的录取情况都抱有很大的兴趣&#xff0c;都比较关心自己的理想专业大概能上哪些大学。今天&#xff0c;小编将为大家以山东高考计算机专业各大学录取分数进行排名&#xff0c;供下一届高考生参考。计算机专业作为近…

letsencrypt 自动续期不关闭nginx

为什么80%的码农都做不了架构师&#xff1f;>>> 已失效 corntab -e 5 0 1 * * /opt/letsencrypt/letsencrypt-auto --config /etc/letsencrypt/webroot.ini -d <domain> certonly && sudo service nginx reload/etc/letsencrypt/webroot.ini rsa-key…

loss低但精确度低_低光照图像增强网络-RetinexNet(model.py解析【2】)

论文地址&#xff1a;https://arxiv.org/pdf/1808.04560.pdf代码地址&#xff1a;https://github.com/weichen582/RetinexNet解析目录&#xff1a;https://zhuanlan.zhihu.com/p/88761829整个模型架构被实现为一个类&#xff1a;class lowlight_enhance(object):其构造函数实现…

计算机应用发表论文,计算机应用论文发表.docx

计算机应用论文发表1在工程项目管理中应用计算机技术存在的问题计算机软件是计算机运行的重要保障&#xff0c;一个好的计算机软件直接决定计算机技术在工程项目管理的高效应用。但由于市场上计算机软件种类繁多&#xff0c;质量好坏不一&#xff0c;质量好的价格高&#xff0c…

添加dubbo xsd的支持

使用dubbo时遇到问题&#xff1a; org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document http://code.alibabatech.com/schema/dubbo/dubbo.xsd, because 1) could not find the document; 2) the document could not be read; 3) the root ele…

byte数组穿换成pcm格式_形象地介绍DSD的编解码原理及和PCM的区别

一直有人不清楚DSD到底是啥原理&#xff0c;和MP3, FLAC, APE, WAV等基于PCM编码技术的音频格式又有啥区别。特意做了两张图说明一下。图一是是由很多黑点构成的蒙娜丽莎头像&#xff0c;点击看大图就知道是没有灰阶只有黑白两色。但是人眼是可以看到有丰富的灰阶的。这和DSD一…

最大熵对应的概率分布

最大熵对应的概率分布 最大熵定理 设 \(X \sim p(x)\) 是一个连续型随机变量&#xff0c;其微分熵定义为\[ h(X) - \int p(x)\log p(x) dx \]其中&#xff0c;\(\log\) 一般取自然对数 \(\ln\), 单位为 奈特&#xff08;nats&#xff09;。 考虑如下优化问题&#xff1a;\[ \b…

UBUNTU : Destination Host Unreachable

介绍我的系统的搭建的方式: WIN7 64 VMWARE STATION&#xff0c;方式是进行桥接的方式。最近突然出现了问题&#xff0c;Ubuntu ping 外网或者 PING WIN 7 的时候&#xff0c;出现 Destination Host Unreachable 的错误&#xff1b;想着去修改网卡的链接形式&#xff1a; 编辑…

焦作师范高等专科学校对口计算机分数线,焦作师范高等专科学校录取分数线2018...

焦作师范高等专科学校录取分数线20182018年 电子信息工程技术 理科 332 3602018年 物联网应用技术 文科 391 4082018年 物联网应用技术 理科 328 3692018年 学前教育 文科 388 4022018年 学前教育 理科 324 3512018年 移动应用开发 文科 02018年 移动应用开发 理科 305 3322018…

在Spring boot 配置过滤器(filter)

在spring boot 配置servlet filter 逻辑上与配置spring 是一样的。 不过相比spring 更加简化配置的难度。 这里只需要两步1 创建一个自定义顾虑器并继承spring filter 例如OncePerRequestFilterpublic class AuthenticationFilter extends OncePerRequestFilter{private final …

Flink之状态之状态存储 state backends

流计算中可能有各种方式来保存状态&#xff1a; 窗口操作使用 了KV操作的函数继承了CheckpointedFunction的函数当开始做checkpointing的时候&#xff0c;状态会被持久化到checkpoints里来规避数据丢失和状态恢复。选择的状态存储策略不同&#xff0c;会导致状态持久化如何和ch…

怎么把分开的pdf放在一起_糖和盐混在一起了要怎么分开?| 趣问万物

趣 问 万 物来源&#xff1a;把科学带回家撰文&#xff1a;Mirror如何分离糖和盐&#xff1f;图源&#xff1a;Pixabay小手一抖&#xff0c;不小心把糖(蔗糖)和盐(氯化钠)混在一块儿了该怎么办&#xff1f;趁着光棍节&#xff0c;就让我们吃饱了撑着研究研究把糖和盐拆散的N种方…

《JavaScript DOM编程艺术》笔记

1. 把<script>标签放到HTML文档的最后&#xff0c;<body>标签之前能使浏览器更快地加载页面。 2. nodeType的常见取值 元素节点(1) 属性节点(2) 文本节点(3) 3. <a href"http://www.baidu.com" οnclick"popUp(this.href);return false;"&g…

maven POM.xml内的标签大全详解

<project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd"><!--父项目的坐标。如果…

常熟理工学院计算机考研,2018江苏专转本考生必看-常熟理工学院介绍

原标题&#xff1a;2018江苏专转本考生必看-常熟理工学院介绍这次轮到默默学介绍常熟理工学院啦&#xff01;今年常熟理工学院有个专转本的学生&#xff0c;也是默默学专转本视频课程考上常熟理工的一个学生&#xff0c;叫黄群超&#xff0c;当年专转本计算机也考了八九十分吧&…

.net中调用esb_大型ESB服务总线平台服务运行分析和监控预警实践

今天准备谈下ESB总线平台建设项目中的服务运行统计分析&#xff0c;服务心跳监测&#xff0c;服务监控预警方面的设计和实现。可以看到&#xff0c;在一个ESB服务总线平台上线后&#xff0c;SOA治理管控就变得相当重要&#xff0c;而这些运行监控分析本身也是提升ESB总线平台高…