日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

迷宫游戏 堆栈实现

發布時間:2023/11/30 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 迷宫游戏 堆栈实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#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

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的迷宫游戏 堆栈实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。