迷宮游戲 堆棧實現

#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.pswp.cn/news/397337.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397337.shtml
英文地址,請注明出處:http://en.pswp.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總線平臺高…