最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于C語言實(shí)現(xiàn)簡單的走迷宮游戲

 更新時(shí)間:2016年04月18日 16:07:22   作者:LiaoGlenn  
這篇文章主要介紹了基于C語言實(shí)現(xiàn)簡單的走迷宮游戲,用到雙向隊(duì)列,方便在運(yùn)行完畢后輸出經(jīng)過的點(diǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例講述了C語言實(shí)現(xiàn)簡單的走迷宮游戲的方法,代碼完整,便于讀者理解。

學(xué)數(shù)據(jù)結(jié)構(gòu)時(shí)用“棧”寫的一個(gè)走迷宮程序,實(shí)際上用到雙向隊(duì)列,方便在運(yùn)行完畢后輸出經(jīng)過的點(diǎn)。

#include <cstdio>
#include <deque>
#include <windows.h>
using namespace std;
class node
{
public:
 int x,y;
 int lastOpt;
};
deque<node> sta;
int x,y;
int endx,endy;
int mapW,mapH;
int steps;
int xopt[5]= {0,0,1,0,-1};
int yopt[5]= {0,1,0,-1,0};
int map[100][100]=
{
 
};
void init()
{
 x = 1;
 y = 1;
 endx = 1;
 endy = 9;
 mapH = 10;
 mapW = 10;
 for(int i=0; i<=mapH; i++)
  for(int j=0; j<=mapW; j++)
  {
   if(i==0 ||j==0 ||i==mapH||j==mapW)
    map[i][j]=-1;
  }
 
 steps=0;
 map[1][2]=-1;
 map[2][2]=-1;
 map[3][2]=-1;
 map[4][2]=-1;
 
 map[6][2]=-1;
 map[7][2]=-1;
 map[8][2]=-1;
 map[9][2]=-1;
 map[9][3]=-1;
 map[8][3]=-1;
 map[1][4]=-1;
 map[3][4]=-1;
 map[4][4]=-1;
 map[5][4]=-1;
 map[6][4]=-1;
 map[7][4]=-1;
 map[1][6]=-1;
 map[2][6]=-1;
 map[3][6]=-1;
 map[4][6]=-1;
 map[5][6]=-1;
 map[6][6]=-1;
 map[7][6]=-1;
 map[8][6]=-1;
 map[8][7]=-1;
 map[8][8]=-1;
 map[7][8]=-1;
 map[6][8]=-1;
 map[5][8]=-1;
 map[4][8]=-1;
 map[3][8]=-1;
 map[2][8]=-1;
 map[1][8]=-1;
 
 map[endx][endy]=5;
}
 
void dis()
{
 system("cls");
 int ori = map[x][y];
 map[x][y]=1;
 for(int i=0; i<=mapH; ++i)
 {
  for(int j=0; j<=mapW; ++j)
  {
   if(map[i][j]==0)
    printf(" ");
   else if(map[i][j]==-1)
    printf(" #");
   else if(map[i][j]==1)
    printf(" @");
   else if(map[i][j]==2)
    printf(" .");
   else if(map[i][j]==5)
    printf(" !");
  }
  cout<<i<<endl;
 }
 for(int j=0; j<=mapW; ++j)
  cout<<j<<" ";
 printf("\n\n > steps:%d Exit:(%d,%d)\n",steps,endx,endy);
 map[x][y] = ori;
}
int can(int n)
{
 if(map[x+xopt[n]][y+yopt[n]] == 0 || map[x+xopt[n]][y+yopt[n]] == 5)
  return 1;
 return 0;
 
}
void visit(int n)
{
 map[x][y]=2;
 x+=xopt[n];
 y+=yopt[n];
 node tem;
 tem.x = x;
 tem.y = y;
 tem.lastOpt = n;
 sta.push_back(tem);
 steps++;
}
int main()
{
 init();
 node tem;
 while( x != endx || y!=endy)
 {
 
  int cans = 0;
  for(int i=1; i<=4; i++)
  {
   if(can(i))
   {
    cans = 1;
    visit(i);
    break;
   }
  }
  if(!cans)
  {
   if(!sta.empty())
   {
    tem = sta.back();
    map[tem.x][tem.y]=0;
    sta.pop_back();
   }
   else
   {
    map[x][y]=2;
    x+=xopt[tem.lastOpt];
    x+=yopt[tem.lastOpt];
    dis();
    break;
   }
 
  }
 
  dis();
  Sleep(500);
 
 }
 if(x==endx && y == endy)
 cout<<"\n > i am finished....\n";
 else
 cout<<"\n > i am finished...but i can't find the right way\n";
 return 0;
}

效果圖:

以上就是本文的全部內(nèi)容,希望對大家學(xué)習(xí)C語言有所幫助。

相關(guān)文章

  • c語言的cps實(shí)現(xiàn)求fibonacci數(shù)列示例

    c語言的cps實(shí)現(xiàn)求fibonacci數(shù)列示例

    這篇文章主要介紹了c語言的cps實(shí)現(xiàn)求fibonacci數(shù)列示例,需要的朋友可以參考下
    2014-03-03
  • C++控制臺(tái)版掃雷游戲

    C++控制臺(tái)版掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了C++控制臺(tái)版掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C++中的四個(gè)默認(rèn)成員函數(shù)與運(yùn)算符重載詳解

    C++中的四個(gè)默認(rèn)成員函數(shù)與運(yùn)算符重載詳解

    這篇文章主要給大家介紹了關(guān)于C++中四個(gè)默認(rèn)成員函數(shù)與運(yùn)算符重載的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • C++中用兩個(gè)標(biāo)準(zhǔn)容器stack,實(shí)現(xiàn)一個(gè)隊(duì)列的方法詳解

    C++中用兩個(gè)標(biāo)準(zhǔn)容器stack,實(shí)現(xiàn)一個(gè)隊(duì)列的方法詳解

    本篇文章是對C++中使用兩個(gè)標(biāo)準(zhǔn)容器stack,實(shí)現(xiàn)一個(gè)隊(duì)列的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 一文詳解如何實(shí)現(xiàn)QT的多語言切換(靜態(tài)+動(dòng)態(tài))

    一文詳解如何實(shí)現(xiàn)QT的多語言切換(靜態(tài)+動(dòng)態(tài))

    這篇文章主要給大家介紹了關(guān)于如何實(shí)現(xiàn)QT的多語言切換(靜態(tài)+動(dòng)態(tài))的相關(guān)資料,Qt是一款跨平臺(tái)的C++應(yīng)用程序開發(fā)框架,提供了一套豐富的工具和類庫來簡化應(yīng)用程序開發(fā),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • VC小技巧匯總之對話框技巧

    VC小技巧匯總之對話框技巧

    這篇文章主要介紹了VC小技巧匯總之對話框技巧,非常實(shí)用!對于進(jìn)行VC開發(fā)有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-07-07
  • C++之vector內(nèi)存釋放原理

    C++之vector內(nèi)存釋放原理

    這篇文章主要介紹了C++之vector內(nèi)存釋放原理,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • QT實(shí)現(xiàn)TCP客戶端自動(dòng)連接

    QT實(shí)現(xiàn)TCP客戶端自動(dòng)連接

    這篇文章主要為大家詳細(xì)介紹了QT中一個(gè)TCP客戶端自動(dòng)連接的測試模型,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • QT編寫tcp通信工具(Server端)

    QT編寫tcp通信工具(Server端)

    這篇文章主要為大家詳細(xì)介紹了QT編寫tcp通信工具,一個(gè)類似網(wǎng)上常見的網(wǎng)絡(luò)調(diào)試工具,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語言獲取消耗內(nèi)存的方法

    C語言獲取消耗內(nèi)存的方法

    這篇文章主要介紹了C語言獲取消耗內(nèi)存的方法,涉及C語言中malloc方法的使用技巧,非常簡單實(shí)用,需要的朋友可以參考下
    2015-07-07

最新評(píng)論

屯门区| 香港| 英吉沙县| 洪洞县| 健康| 盘锦市| 萨迦县| 福海县| 嘉荫县| 钦州市| 沂水县| 罗山县| 临武县| 奉节县| 平原县| 承德县| 土默特右旗| 云林县| 商都县| 武义县| 霞浦县| 伽师县| 中宁县| 临潭县| 陇西县| 郸城县| 仁寿县| 库伦旗| 新和县| 盐亭县| 定陶县| 石狮市| 海伦市| 信宜市| 新巴尔虎右旗| 从化市| 嘉荫县| 黄陵县| 鄂伦春自治旗| 石家庄市| 桑植县|