青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

聚星亭

吾笨笨且懶散兮 急須改之而奮進
posts - 74, comments - 166, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
            到今天,函數學完了,數據也講到多維數組了,老師讓利用學到的東西,寫一個走迷宮的程序。
在這里記錄一下:
我要走的迷宮圖如下:
            

      OK,開始定義迷宮地圖數組:
/************************************************************************/
// 迷宮地圖數據
// 0表示墻
// 1表示可以行走的路
// 2表示已經走過的路
// 3表示返回的路
/*
***********************************************************************/
int g_MazeMapData[13][13= {
    {
0000000000000},
    {
0111001111011},
    {
0101100001010},
    {
0100111111010},
    {
0111010010010},
    {
0101010111010},
    {
0101110100010},
    {
0111010101110},
    {
0010001111010},
    {
0010001000010},
    {
0110111111010},
    {
0101100001110},
    {
0100000000000}
};

            相關的宏定義及函數聲明:
//////////////////////////////////////////////////////////////////////////
#define IN_POS_X    1  // 入口點X坐標
#define IN_POS_Y    12   // 入口點Y坐標
#define OUT_POS_X   12   // 出口點X坐標
#define OUT_POS_Y   1  // 出口點Y坐標

#define UNKNOWN     1   // 從來沒走過的路
#define PASS        2   // 經過的標記
#define BACK        3   // 返回的標記


#define GO          0   // 前進
#define COMEBACK    1   // 后退
//////////////////////////////////////////////////////////////////////////
extern int g_MazeMapData[13][13];// 迷宮地圖數據
extern int g_nCurPosX; // 當前的X坐標
extern int g_nCurPosY; // 當前的Y坐標

//////////////////////////////////////////////////////////////////////////
int Start(); // 找到出口了, 返回1, 否則返回0, 如果程序異常中斷了,返回-1
int MoveTo(int nFlag); // 具體走路的函數
            先初始化當前坐標到入口坐標:
int g_nCurPosX = IN_POS_X; // 當前的X坐標
int g_nCurPosY = IN_POS_Y; // 當前的Y坐標

   
            整體流程上,如果當前的坐標等于出口的坐標,那就可以確定已經找到出口了,如果遇到死角,則原路返回到上一個岔口,走另一條路,如果退回到迷宮入口的坐標,那就認為沒有找到出口……

/************************************************************************/
// 開始走迷宮
// 如果找到出口了,返回1,否則返回0
// 如果程序異常中斷了,返回-1
/*
***********************************************************************/
int Start()
{
    
while (1)
    {
        
// 開始走路
        if (MoveTo(GO) == 0)
        {
            MoveTo(COMEBACK);
        }

        // 不停的刷新窗口,模擬動態走路效果
        
for(int i=0; i<=OUT_POS_X; i++)
        {
            
for(int j = 0; j <= IN_POS_Y; j++)
            {
                printf(
"%d ", g_MazeMapData[i][j]);
            }
            printf(
"\r\n");
        }

        Sleep(
500);

        system(
"cls");

        
// 如果當前的坐標是出口坐標表示找到出口了
        if (g_nCurPosX == OUT_POS_X && g_nCurPosY == OUT_POS_Y)
        {
            
return 1;
        }

        
// 如果又退回入口位置了,表示沒有找到出口
        if (g_nCurPosX == IN_POS_X && g_nCurPosY == IN_POS_Y)
        {
            
return 0;
        }
    }

    
return -1;
}

         現在開始寫具體的走路函數了,重點有兩點,首先是遇到岔路得優先選擇,再就是如果原路退回。

關于第一個問題,比較容易解決,我們寫if判斷的時候,按照 上、右、下、左的順序寫,這樣它就可以優先選擇方向了。

對于第二個問題,我們可以給函數加個參數,來表明是前進還是后退。

代碼如下:

/************************************************************************/
// 按照 上、右、下、左的順序尋路
// 參數含義:
//     nFlag: GO 表示前進,COMEBACK表示返回
// 返 回 值:
//     1 : 向上走,2: 向右走, 3: 向下走, 4: 向左走, 0:異常(出地圖了,不移動)
/*
***********************************************************************/
int MoveTo(int nFlag)
{
    
if(nFlag == 0)
    {
        
// 上
        if (g_MazeMapData[g_nCurPosX][g_nCurPosY-1== UNKNOWN)
        {
            g_MazeMapData[g_nCurPosX][g_nCurPosY] 
= PASS;
            g_nCurPosY
--;
            
return 1;
        }

        
// 右
        if (g_MazeMapData[g_nCurPosX+1][g_nCurPosY] == UNKNOWN)
        {
            g_MazeMapData[g_nCurPosX][g_nCurPosY] 
= PASS;
            g_nCurPosX
++;
            
return 2;
        }

        
// 下
        if (g_MazeMapData[g_nCurPosX][g_nCurPosY+1== UNKNOWN)
        {
            g_MazeMapData[g_nCurPosX][g_nCurPosY] 
= PASS;
            g_nCurPosY
++;
            
return 3;
        }

        
// 左
        if (g_MazeMapData[g_nCurPosX-1][g_nCurPosY] == UNKNOWN)
        {
            g_MazeMapData[g_nCurPosX][g_nCurPosY] 
= PASS;
            g_nCurPosX
--;
            
return 4;
        }
    }
    
else
    {
        
// 上
        if (g_MazeMapData[g_nCurPosX][g_nCurPosY-1== PASS)
        {
            g_MazeMapData[g_nCurPosX][g_nCurPosY] 
= BACK;
            g_nCurPosY
--;
            
return 1;
        }

        
// 右
        if (g_MazeMapData[g_nCurPosX+1][g_nCurPosY] == PASS)
        {
            g_MazeMapData[g_nCurPosX][g_nCurPosY] 
= BACK;
            g_nCurPosX
++;
            
return 2;
        }

        
// 下
        if (g_MazeMapData[g_nCurPosX][g_nCurPosY+1== PASS)
        {
            g_MazeMapData[g_nCurPosX][g_nCurPosY] 
= BACK;
            g_nCurPosY
++;
            
return 3;
        }
        
        
// 左
        if (g_MazeMapData[g_nCurPosX-1][g_nCurPosY] == PASS)
        {
            g_MazeMapData[g_nCurPosX][g_nCurPosY] 
= BACK;
            g_nCurPosX
--;
            
return 4;
        }
    }

    
return 0;
}

            現在貌似還有一個問題,就是,在入口點的時候,我們需要它往左走,按照我們的優先級,是最后向左移動,我們的入口在最右邊……

            不過這個也不是問題,因為我們的迷宮周圍是用圍墻圍起來的,所以,向右就是墻,不會出現左邊進,迷宮右側出來的情況,好,先瞧瞧效果……


Feedback

# re: 寫了個很笨的走迷宮(效率很差……)  回復  更多評論   

2009-12-20 02:59 by 你健哥
你個小菜鳥,寫的太菜,花錢秀腿

# re: 寫了個很笨的走迷宮(效率很差……)  回復  更多評論   

2009-12-23 08:07 by 呵呵
兄弟 好好學,冬至問候聲,現在天氣比較冷,多注意身體.
-------廈門的哥們

# re: 寫了個很笨的走迷宮(效率很差……)  回復  更多評論   

2009-12-23 16:14 by besterChen
@呵呵

恩,謝謝,你也多保重哈
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产欧美成人| 亚洲一本大道在线| 日韩五码在线| 正在播放欧美一区| 一区二区日韩免费看| 亚洲一区日韩| 欧美一区二区视频在线观看2020 | 亚洲精品日韩激情在线电影 | 久久午夜激情| 欧美日韩成人一区二区三区| 欧美午夜一区| 狠狠色丁香婷婷综合久久片| 永久免费视频成人| 一本色道久久99精品综合| 亚洲男女自偷自拍| 欧美成人亚洲成人日韩成人| 一区二区视频欧美| 最新国产拍偷乱拍精品| 亚洲综合精品四区| 蜜月aⅴ免费一区二区三区| 亚洲全部视频| 一区二区三区免费网站| 亚洲男人影院| 蜜桃久久av一区| 国产精品嫩草影院一区二区| 国语自产精品视频在线看8查询8 | 久久综合给合久久狠狠狠97色69| 欧美国产日韩二区| 亚洲欧美中文日韩在线| 美女在线一区二区| 国产日韩精品一区二区| 日韩一级黄色av| 久久亚洲国产精品日日av夜夜| 亚洲国产精品久久久久久女王| 亚洲欧美在线高清| 欧美日韩一区国产| 在线成人黄色| 香蕉精品999视频一区二区 | 欧美怡红院视频| 亚洲激情综合| 久久人人97超碰国产公开结果| 国产精品久久久| 日韩一区二区久久| 免费在线看成人av| 欧美在线视频一区二区| 国产精品久久久久9999高清| 亚洲人精品午夜| 欧美成年人视频网站| 亚洲欧美视频一区二区三区| 欧美视频专区一二在线观看| 亚洲久久在线| 欧美成人自拍| 麻豆久久婷婷| 91久久久久久国产精品| 免费成人黄色av| 久久久999精品| 国产资源精品在线观看| 欧美一区二区三区在线观看| 亚洲一区二区三区免费视频| 欧美日韩一区二区三区| 亚洲午夜av在线| 日韩一级在线观看| 国产精品盗摄久久久| 亚洲欧美成人综合| 午夜精品一区二区三区在线视| 国产精品久久7| 久久精品五月| 久久人人超碰| 99av国产精品欲麻豆| 最新精品在线| 欧美日韩伊人| 午夜免费日韩视频| 欧美在线日韩在线| 欧美一级成年大片在线观看| 国产精品区二区三区日本 | 欧美丰满少妇xxxbbb| 老色批av在线精品| 亚洲啪啪91| 一区二区福利| 国产视频一区欧美| 另类av一区二区| 欧美成年人视频网站| 亚洲美女视频| 亚洲一区二区黄色| 黄色免费成人| 亚洲精品国精品久久99热一| 国产精品va| 麻豆成人精品| 欧美日韩在线免费| 久久国产欧美精品| 免费不卡中文字幕视频| 亚洲中无吗在线| 免费观看国产成人| 欧美极品aⅴ影院| 欧美一区二区三区成人| 久久久美女艺术照精彩视频福利播放| 最新亚洲激情| 亚洲一区成人| 亚洲精品韩国| 午夜在线电影亚洲一区| 亚洲日本中文字幕区| 亚洲一区二区三区色| 亚洲国产精品va| 亚洲欧美日韩在线播放| 亚洲日本va在线观看| 欧美一区二区成人6969| 日韩亚洲欧美高清| 毛片av中文字幕一区二区| 香蕉免费一区二区三区在线观看 | 免费日韩av| 欧美视频二区| 欧美成人久久| 国产日韩一区二区三区在线| 亚洲精品裸体| 亚洲第一页在线| 欧美在线播放视频| 欧美一区二区三区在线免费观看| 欧美黄色视屏| 女人天堂亚洲aⅴ在线观看| 国产精品私人影院| 99xxxx成人网| 日韩一级免费观看| 另类天堂视频在线观看| 久久成人av少妇免费| 欧美三级欧美一级| 亚洲欧洲综合另类| 亚洲国产综合在线| 免费短视频成人日韩| 久久永久免费| 在线观看欧美日韩国产| 欧美一区二区三区四区在线观看地址 | 午夜免费日韩视频| 亚洲婷婷免费| 欧美日韩国产精品一区二区亚洲| 欧美xart系列高清| 在线欧美影院| 久久影音先锋| 久久综合狠狠| 在线看片一区| 免费成人美女女| 亚洲福利视频专区| 亚洲日本欧美日韩高观看| 欧美寡妇偷汉性猛交| 亚洲电影一级黄| 亚洲精品社区| 欧美日韩在线亚洲一区蜜芽| 99国产精品99久久久久久粉嫩| 99re成人精品视频| 欧美精品国产精品| 一本久久青青| 欧美在线观看视频| 国内精品国产成人| 久久嫩草精品久久久久| 亚洲国产成人av| 亚洲视频一区二区| 国产精品每日更新在线播放网址| 亚洲欧美国产一区二区三区| 久久九九热re6这里有精品| 精品成人乱色一区二区| 免费久久99精品国产自| 亚洲乱码国产乱码精品精天堂 | 亚洲一区二区在线播放| 国产午夜精品理论片a级探花| 久久免费午夜影院| 亚洲日韩欧美视频一区| 欧美一区二区三区久久精品茉莉花| 国产欧美日韩在线播放| 美日韩精品视频| 99国产精品99久久久久久粉嫩| 亚洲欧美日韩在线高清直播| 国产一二三精品| 欧美精品www在线观看| 亚洲网站视频福利| 欧美本精品男人aⅴ天堂| 亚洲伊人久久综合| 亚洲第一中文字幕| 国产伦精品免费视频| 欧美黄色小视频| 欧美一级淫片播放口| 亚洲国产一区二区精品专区| 亚洲欧美激情一区| 亚洲日本无吗高清不卡| 国产亚洲精品7777| 欧美天堂亚洲电影院在线播放| 久久精品五月| 亚洲香蕉成视频在线观看 | 免费观看亚洲视频大全| 中文精品一区二区三区| 亚洲国产精品久久久久| 国产日韩欧美一区| 欧美精品久久久久久久久久| 欧美在线你懂的| 亚洲一区二区成人| 日韩视频中文字幕| 欧美黄色一区| 久久男人av资源网站| 亚洲欧美色一区| 亚洲视频在线播放| 一区二区冒白浆视频| 亚洲国产日日夜夜|