[Java]資料結構課程設計:迷宮老鼠2.0(完整項目代碼與設計報告)

來源:互聯網
上載者:User

包含功能:

1.自訂迷宮大小

2.使用圖的深度遍曆隨機產生迷宮

3.使用者使用滑鼠繪製自訂迷宮

4.單步求解迷宮

5.一鍵求解迷宮

6.聲音特效



完整項目下載:

http://download.csdn.net/detail/wxg694175346/5179044


程式:




一、系統開發平台

    迷宮老鼠:利用堆棧尋找迷宮的路徑解法。

    程式設計語言:Java

    開發工具:Eclipse

    作業系統:Windows


二、系統規劃
2.1 任務陳述

迷宮老鼠的應用主要用於
解決迷宮的尋徑問題。

2.2 任務目標
解決迷宮問題:入口A進入,出口B走出
隨機設計一個迷宮並且求解
自訂一個迷宮並且求解。


三、系統定義


四、需求分析
4.1 資料結構需求

資料結構主要涉及三個部分:
1.頂點的資料對象:包含四個1/0整數資料表示該點四個方向的連通狀況,資料之間沒有聯絡。
2.迷宮的地圖:需要對迷宮的路徑進行儲存,大小固定,組內元素沒有聯絡,互不影響,沒有先後順序。組內的資料類型為封裝好的頂點對象類。
3.迷宮求解中的路徑:需要儲存經過的路徑,元素為封裝的頂點對象。元素必須按照順序排列,先進先出,資料大小無影響。


4.2 操作需求
1.隨機模式


2.自訂模式中





五、 實現思想(分兩部分:隨機產生可解迷宮與自訂迷宮)

1. 隨機產生可解迷宮:

   首先,迷宮由n*n個方陣點組成,每個點有控制上下左右,4個方向的牆的屬性值,以推倒牆的方式來構建兩點間的通路。要是兩點間有通路,即要使左邊的正方形推倒右牆,右邊的正方形推倒左牆,則形成此通路,通過設定點的屬性值來儲存構成迷宮的點。

利用圖的深度優先遍曆原則,從起點(0,0)開始,想任意可訪問的點進行隨機深度遍曆,直至所有點都被遍曆到為止(此處遍曆全部的點是為了使迷宮看起來更加和諧好看,也增加了迷宮的複雜度),深度遍曆的路徑即為迷宮可行走的通路,當解迷宮時只能在此規定的通路上尋求通路,也就間接的形成了迷宮。

由於圖的深度遍曆的特點,起點(0,0)可以到達圖中任何一個點,此處設定終點為矩陣的最後一個點,確保了起點到終點一定有通路,且通路唯一。將構成迷宮的所有點形成一個可變數組ArrayList,以供解迷宮時使用。

解迷宮時,方向選擇按照先右,後下,再左上,並且提供計算兩點間在確定方向上是否存在通路的判斷方法,如果該點找到了下一個可通行的點,則將該點加入堆棧,如果找不到,則從堆棧中取出一個點,即形成了迴路。

2. 自訂迷宮

首先根據輸入產生m*n個方格,通過滑鼠點擊事件,產生點擊的方格處設定障礙,由此產生迷宮。

解迷宮時,在上述解迷宮的基礎上,加入沒有通路的判斷(即到達不了終點的判斷),即堆棧已經為空白,但仍要從其中取出點時,表示此迷宮已經沒有可以再到達的點,此時反映迷宮無通路,給予使用者提示,解迷宮完成。

六、 資料結構設計

首先,利用動態數組儲存迷宮的所有點類(MazePoint類),隨機產生與自訂迷宮的過程中,便是通過設定這些迷宮點來構造迷宮的。

資料結構設計關鍵在解迷宮時予以體現,此處我利用堆棧的思想,講解迷宮時經過的點壓入堆棧,當在一點找不到可到達的下一點時,便取出堆棧中最頂層的點,將此點設為當前點尋找可到達的點,依次進行此過程,直至到達終點或堆棧中已沒有點可以被取出為止。

以為在解迷宮的過程中,尋找過得點被唯一標識,當形成迴路再尋找可到達的點時,這些被唯一標識的點不會被二次到達,以此保證迷宮不會出現死迴圈的狀態。




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.