設定 EYNY 為首頁  |  加入我的最愛
伊莉討論區


休閒聊天
學術文化
感情感性
興趣交流
家庭事務
旅遊交流
飲食交流
家族門派
貼圖分享
動漫交流
音樂世界
美容打扮
潮流資訊
影視娛樂
電玩遊戲
連線遊戲
網絡遊戲
交易廣場
下載分享
BT下載區
CB下載區
電腦資訊
數碼產品
手機交流
網站事務
體育運動
時事新聞
上班一族
博彩娛樂
成人話題


 
標題: [問題] 如何用C寫出老鼠走迷宮的程式?
ts04051817

Rank: 1
幼兒生(0/200)
潛水  
UID 578083
精華 0
積分 77
帖子 10
潛水 9 米
閱讀權限 10
註冊 2006-12-17
發表於 2008-7-10 09:25 PM  資料 文集 短消息 
維克斯討論區

如何用C寫出老鼠走迷宮的程式?

[顯示] [隱藏]
如何用C寫出老鼠走迷宮的程式?
有大大能教教愚昧的小弟嗎

1當牆壁 0當可走路線
頂部
yongling

Rank: 1
幼兒生(0/200)
潛水  
UID 4488143
精華 0
積分 1
帖子 14
潛水 219 米
閱讀權限 10
註冊 2008-6-29
發表於 2008-7-11 10:49 PM  資料 文集 短消息 
維克斯討論區

我有 c++ 的範例,這個程式會自動生成迷宮地圖,每張地圖老鼠都會從起點開始找路走到終點,你可以參考看看。[code]/*

* Program         : maze.cc
* Author            : Yong-ling Chen
* Blog                : http://yongling225.blogspot.com/
* Latest Version : 1.0
* Test Platform  : Linux Ubuntu 5.10
* Change Log     :
*     1.0 - (2006/04/29) :
*         ˙新增 Maze 類別
*         ˙隨機生成迷宮地圖
*         ˙將尋找路線函式放入 Maze 類別中
*     0.1 - (2005) :
*         ˙尋找路線函式
*
* */

#include<iostream>
#include<cstdlib>
#include<ctime>

using namespace std ;

class Maze {

private :

    int **maze ;

    //出口生成函式,設定起點和終點座標(必須為奇數)
    void exitSet() {
      if ( rand() % 2 == 0 ) {
        //上 -> 下
        startX = 0 ;
        startY = rand() % (COL-3) + 1 ;
        startY += startY % 2 ;
        endX = ROW - 1 ;
        endY = rand() % (COL-3) + 1 ;
        endY += endY % 2 ;
      }
      else {
        //左 -> 右
        startX = rand() % (ROW-3) + 1 ;
        startX += startX % 2 ;
        startY = 0 ;
        endX = rand() % (ROW-3) + 1 ;
        endX += endX % 2 ;
        endY = COL - 1 ;
      }
    }

    //路線生成函式
    void generateWay( int x , int y ) {
      int d ;
      maze[x][y] = 1 ;
      //if 為起點
      if ( x == startX && y == startY ) {
        //決定起點該生成的方向
        d = ( y == 0 ? 0 : 1 ) ;
        maze[mx(x,d,1)][my(y,d,1)] = 1 ;
        generateWay( mx(x,d,2) , my(y,d,2) ) ;
      }
      //else if 為終點
      else if ( x == endX && y == endY ) ;
      //else 為其他點,隨機選取方向
      else {
        while ( maze[mx(x,0,2)][my(y,0,2)] == 0 ||
                maze[mx(x,1,2)][my(y,1,2)] == 0 ||
                maze[mx(x,2,2)][my(y,2,2)] == 0 ||
                maze[mx(x,3,2)][my(y,3,2)] == 0 ) {
          d = rand() % 4 ;
          if ( maze[mx(x,d,2)][my(y,d,2)] == 0 ) {
            maze[mx(x,d,1)][my(y,d,1)] = 1 ;
            g [ 瀏覽完整內容請先註冊或登入會員。]


 附件: 您所在的用戶組無法下載或查看附件 - 立即升級用戶組
頂部
柔情滿月

Rank: 2Rank: 2
小學生(200/1000)
潛水  
UID 3128616
精華 0
積分 309
帖子 184
潛水 1547 米
閱讀權限 20
註冊 2007-12-27
發表於 2008-7-14 09:07 PM  資料 文集 短消息 
維克斯討論區

#include <iostream>
#include <iomanip>

using namespace std;

void printgraph( int a[][29], int row, int col);
int findway( int array[][29] , int x , int y );




void printgraph( int a[][29],int row, int col)
{
     for(int i = 0; i < row; i++)
     {
             for( int j = 0; j < col; j++)
             {
             if( a[j] == 1)
             cout <<" @";
            
             else if( a[j] == 2)
             cout<<" .";
            
             else
             cout <<"  ";
             }
             cout << endl;
     }
             cout << endl;
};






int findway( int array[][29] ,int x , int y )
{


  if ( x == 0 && y == 27 )
    {
         array[x][y] = 2;
         return 1 ;
    }

   else if ( x == 12 && y == 1 )
    {
         array[x][y] = 2;
         return findway( array ,11 ,1 );
    }
   
   else if ( array[x][y] == 1 || array[x][y] == 2 )
    {  
         return 0;
    }
   
   else
{
        array[x][y] = 2;//判斷走過地方

    if ( array[x+1][y] == 2 && ( findway( array , x , y+1 ) || findway( array , x-1 , y ) || findway( array , x , y-1 ))
         )
    {
      return 1;
    }
   
    else if ( array[x][y+1] == 2 && ( findway( array , x-1 , y ) || findway( array , x , y-1 ) || findway( array , x+1 , y )))
    {
      return 1;
    }
   
    else if ( array[x-1][y] == 2 && ( findway( array , x , y-1 ) || findway( array , x+1 , y ) || findway( array , x , y+1 )))
    {
      return 1;
    }

     else if ( array[x][y-1] == 2 && ( findway( array , x+1 , y ) || findway( array , x , y+1 ) || findway( array , x-1 , y )))
    {
      return 1;
    }
    else
    {
      array[x][y] = 0;
      return 0;
    }
  }
}

   
int main()
{
   
  const int row = 13 ,col = 29 ;
  int a[row][col] =  
{        
        {1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,1},               
     [ 瀏覽完整內容請先註冊或登入會員。]
頂部
daviddr

Rank: 2Rank: 2
小學生(200/1000)
潛水  
UID 4114704
精華 0
積分 578
帖子 582
潛水 1102 米
閱讀權限 20
註冊 2008-5-3
來自 Taiwan
發表於 2008-7-14 11:44 PM  資料 文集 短消息 
伊莉部落格伊莉交友伊莉聊天伊莉相簿

Nice codes..
but '[ i ]' was translated by ' i '
所以後文變成斜體囉..

You should wrap source code by [ code ] .. [ /code ] pair :-)


[ 本帖最後由 daviddr 於 2008-7-14 11:48 PM 編輯 ]
頂部
eddieboxx

Rank: 1
幼兒生(0/200)
潛水  
UID 4562651
精華 0
積分 17
帖子 63
潛水 1485 米
閱讀權限 10
註冊 2008-7-12
發表於 2008-7-19 04:55 PM  資料 文集 短消息 
伊莉部落格伊莉交友伊莉聊天伊莉相簿

??????????????????????????
頂部
 




當前時區 GMT+8, 現在時間是 2008-9-6 04:01 PM

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.229608 second(s), 6 queries , Gzip enabled

清除 Cookies - 聯繫我們 - 廣告查詢 [威旭代理] - 伊莉討論區 - Archiver
重要聲明:本討論區是以即時上載留言的方式運作,伊莉討論區對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。伊莉討論區有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。