日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java實現的迷宮游戲

瀏覽:215日期:2022-08-13 15:51:53
完整項目地址:

https://github.com/richenyunqi/Maze-game

軟件總體框架

該軟件主要分為如下三個模塊:

參數設置模塊 按鈕功能模塊按鈕功能模塊 迷宮主界面模塊迷宮主界面模塊 軟件各模塊介紹參數設置模塊

1.迷宮大小相關參數:

ROWS(即迷宮行數,默認設置為奇數,最小值為11,最大值為99,默認值為11); COLS(即迷宮列數,默認設置為奇數,最小值為11,最大值為99,默認值為11); Lattice’s width(即組成迷宮的格子的寬度,迷宮格子默認設置為正方形,指定了迷宮格子的寬度相當于指定了迷宮格子的大小,默認設置為自然數,最小值為5,最大值為30,默認值為15)。

這些參數設置的顯示圖下圖所示:

Java實現的迷宮游戲

2.迷宮創建算法相關參數 本游戲中創建一個迷宮的算法有三種:

Depth First Search Algorithm(深度優先搜索算法) Randomized Prim’s Algorithm(隨機普利姆算法) Recursive Division Algorithm(遞歸分割算法)。 用戶需在同時也只能在這三種迷宮創建算法中任意選擇一種,默認選擇的迷宮創建算法為Depth First Search Algorithm(深度優先搜索算法)。迷宮創建算法相關參數的顯示圖如下圖所示:

Java實現的迷宮游戲

3.迷宮尋路算法相關參數 本游戲中走出一個迷宮的迷宮尋路算法有兩種:

Depth First Search Algorithm(深度優先搜索算法) Breadth First Search Algorithm(廣度優先搜索算法)。 用戶需在同時也只能在這兩種迷宮創建算法中任意選擇一種,默認選擇的迷宮創建算法為Depth First Search Algorithm(深度優先搜索算法)。迷宮尋路算法相關參數的顯示圖如下圖所示:

Java實現的迷宮游戲

4.整個參數設置模塊的顯示圖如下圖所示:

Java實現的迷宮游戲

按鈕功能模塊

本游戲中,按進行游戲的主體不同共設計兩個游戲狀態:

用戶進行游戲的狀態 計算機進行游戲的狀態

本游戲軟件剛剛運行時刻,按鈕功能模塊的顯示圖如下圖所示:

Java實現的迷宮游戲

該模塊涉及到的游戲功能按鈕及相關的適用狀態有以下六種:

Restart按鈕:即重新開始游戲按鈕,在用戶進行游戲的狀態和計算機進行游戲的狀態兩種狀態下均可使用。點擊該按鈕,當前所有正在進行的游戲行為都立刻被終止,程序使用參數設置模塊的相關參數——用戶選中的迷宮創建算法按照用戶選擇的迷宮行列數創建一個新的迷宮,并以用戶選擇的格子寬度顯示在游戲界面上。 Pause/Continue按鈕:即暫停/繼續按鈕,只能在用戶進行游戲的狀態下才能使用。在用戶進行游戲的狀態下,點擊Pause按鈕,當前迷宮游戲被暫停,游戲計時器、游戲計步器被停止,按鈕上的Pause文字被立刻替換成Continue文字;當用戶點擊Continue按鈕時,被暫停的迷宮游戲可以繼續進行,游戲計時器、游戲計步器也在被停止的地方再次開始,按鈕上的Continue文字被立刻替換成Pause文字。 Prompt按鈕:即提示按鈕,只能在用戶進行游戲的狀態下才能使用。在用戶進行游戲的狀態下,Prompt按鈕的主要提示功能是在迷宮主界面上會顯示出一條綠色的由用戶當前的游戲位置到迷宮出口處的路徑,進而對用戶走出迷宮的路徑進行提示。在用戶點擊Prompt按鈕時,會跳出一個對話框要求用戶指定提示路徑的顯示時間,用戶可選擇的顯示時間有:1s、3s、5s、10s、forever。 Play do按鈕:即指定游戲轉換為用戶進行游戲狀態的按鈕,只能在計算機進行游戲的狀態下才能使用。在用戶進行游戲的狀態下,點擊Play do按鈕,當前計算機進行的游戲行為被立刻終止,游戲狀態切換到用戶進行游戲的狀態,將進行游戲的控制權由計算機轉交給用戶。 Computer do按鈕:即指定游戲轉換為計算機進行游戲狀態的按鈕,只能在用戶進行游戲的狀態下才能使用。在用戶進行游戲的狀態下,點擊Computer do按鈕,會跳出一個對話框要求用戶指定計算機進行游戲時每走一步的所用速度,用戶可選擇的速度有:lower seed 、low speed、 medium speed、 high speed、 higher speed。用戶選擇后,當前用戶進行的游戲行為被立刻終止,游戲狀態切換到計算機進行游戲的狀態,將進行游戲的控制權由用戶轉交給計算機。在計算機取得游戲控制權后,程序將使用參數設置模塊中用戶選中的迷宮尋路算法計算出從游戲入口到游戲出口的路徑,并按用戶進行游戲的形式按用戶選擇的進行游戲時每走一步的所用時間將從入口到出口的行走路徑演示一遍。 聲音設置按鈕:即指定是否開啟背景音樂的按鈕,在用戶進行游戲的狀態和計算機進行游戲的狀態兩種狀態下均可使用。迷宮主界面模塊

本游戲軟件剛剛運行時刻,迷宮主界面模塊的顯示圖如下圖所示:

Java實現的迷宮游戲

整個迷宮使用大量的方格(正方形)進行顯示,其中,可行走的路徑用白色方格顯示,不可行走的路徑即障礙物用黑色方格表示,出口用紅色方格表示,用戶用于行走的標識用綠色小球(圓形)表示。用戶通過鍵盤上上下左右的方向鍵操縱小球在迷宮主界面上運動。

參數設計模塊中的ROWS(即迷宮行數)、COLS(即迷宮列數)在迷宮主界面的表示分別指的是迷宮主界面中每行、每列方格的數量,參數設計模塊中的Lattice’s width(即組成迷宮的格子的寬度)在迷宮主界面的表示是迷宮主界面中每個方格的寬。此外,在迷宮主界面模塊的正上方,存在統計用戶進行游戲的當前時刻的所用時間和所走步數的計時器和計步器。

迷宮整體界面

Java實現的迷宮游戲

軟件設計方案軟件相關原理說明

要設計一款迷宮的游戲軟件,其中最主要也是必須要解決的兩大主要問題就是如何去生成一個隨機的迷宮以及如何在一個隨機生成的迷宮中找到從迷宮入口到迷宮出口的路徑。在圖論中,這兩個問題的表示就是:

如何隨機生成一個無權連通圖 如何在一個找到一個無權連通圖中任意兩點間的路徑

關于這兩個問題的解決,目前存在許多算法,本款軟件采取并實現了目前應用最為廣泛的三大隨機無權連通圖生成算法:

Depth First Search Algorithm(深度優先搜索算法) Randomized Prim’s Algorithm(隨機普利姆算法) Recursive Division Algorithm(遞歸分割算法)

以及兩大無權連通圖遍歷算法:

Depth First Search Algorithm(深度優先搜索算法) Breadth First Search Algorithm(廣度優先搜索算法) 迷宮生成算法

在對迷宮生成算法進行具體闡述之前,有兩個概念首先要明確定義一下:迷宮單元和墻。迷宮單元可以映射到無權連通圖中的點,而墻壁則可以映射到無權連通圖中兩點之間的邊。如果墻壁是打通的,則記為無權連通圖中的墻壁兩側的點間有邊;如果墻壁是沒有打通的,則記為無權連通圖中的墻壁兩側的點間沒有邊。要生成一個隨機的迷宮,就需要做到迷宮中任意兩個迷宮單元之間都有一條路徑。

我們用二維數組表示一個迷宮,每個迷宮單元表示為一個二維數組元素,由于生成算法的限制,迷宮的行數和列數均需設置為奇數,在了解了相關算法原理后,就能明白其中原因。在下列迷宮生成算法執行之前,假設位于奇數行奇數列的點為迷宮單元,位于偶數行或者偶數列的點為墻壁,且所有的點均初始化為未訪問狀態、不可通過狀態。

Depth First Search Algorithm(深度優先搜索算法)

算法描述

將起點作為當前迷宮單元并標記為已訪問

當還存在未標記的迷宮單元,進行循環

如果當前迷宮單元有未被訪問過的的相鄰的迷宮單元

隨機選擇一個未訪問的相鄰迷宮單元將當前迷宮單元入棧移除當前迷宮單元與相鄰迷宮單元的墻標記相鄰迷宮單元并用它作為當前迷宮單元

如果當前迷宮單元不存在未訪問的相鄰迷宮單元,并且棧不空

棧頂的迷宮單元出棧

令其成為當前迷宮單元

生成的迷宮特點

一般來說,Depth First Search Algorithm生成的迷宮極度扭曲,有著一條明顯的主路。生成的51行51列迷宮如下圖所示:

Java實現的迷宮游戲

Randomized Prim’s Algorithm(隨機普利姆算法)

算法描述

讓迷宮全是墻.

隨機選一個單元格作為迷宮的通路,然后把它的鄰墻放入列表

當列表里還有墻時

從列表里隨機選一個墻,如果這面墻分隔的兩個單元格只有一個單元格被訪問過

那就從列表里移除這面墻,即把墻打通,讓未訪問的單元格成為迷宮的通路把這個格子的墻加入列表

如果墻兩面的單元格都已經被訪問過,那就從列表里移除這面墻

生成的迷宮特點

相對于深度優先的算法,Randomized Prim’s Algorithm不是優先選擇最近選中的單元格,而是隨機的從所有的列表中的單元格進行選擇,新加入的單元格和舊加入的單元格同樣概率會被選擇,新加入的單元格沒有優先權。因此其分支更多,生成的迷宮更復雜,岔路更多,難度更大,也更自然。生成的51行51列迷宮如下圖所示:

Java實現的迷宮游戲

Recursive Division Algorithm(遞歸分割算法)

算法描述

讓迷宮全是迷宮單元 隨機選擇一偶數行和一偶數列讓其全部變為墻,通過這兩堵墻將整個迷宮分為四個子迷宮 在3面墻上各挖一個洞(為了確保連通) 如果子迷宮仍可分割成四個子迷宮,返回1. 繼續分割子迷宮

生成的迷宮特點Recursive Division Algorithm十分高效,生成的迷宮較為簡單,有點像四叉樹,直路多且不扭曲。生成的51行51列迷宮如下圖所示:

Java實現的迷宮游戲

迷宮尋路算法

由于迷宮相當于連通圖,所以通過使用圖論算法中由任意一點出發遍歷整個連通圖的其他所有頂點的遍歷算法即可找到一條從迷宮入口到迷宮出口的路徑,本游戲軟件使用的是目前應用最為廣泛的Depth First Search Algorithm(深度優先搜索算法)和Breadth First Search Algorithm(廣度優先搜索算法)。注意,此時迷宮中所有可行走的點均視為迷宮單元,所有不可行走的點均視為墻壁。

Depth First Search Algorithm(深度優先搜索算法)

算法描述

訪問入口頂點v,并以此頂點為當前頂點 將當前頂點的未被訪問的鄰接點壓入棧中 彈棧,將彈出的頂點作為當前頂點 若當前頂點沒有未被訪問的鄰接點且棧不空,重復第3步,否則,重復第2步 重復第3、4步,直至搜索到出口頂點

生成的路徑特點:Depth First Search Algorithm 在由Recursive Division Algorithm生成的51行51列迷宮中生成的路徑如下圖所示:

Java實現的迷宮游戲

Breadth First Search Algorithm(廣度優先搜索算法)

算法描述

訪問入口頂點v,并以此頂點為當前頂點 將當前頂點的未被訪問的鄰接點逐個放入隊列中 隊首頂點出隊,并作為當前頂點 若當前頂點沒有未被訪問的鄰接點且隊列不空,重復第3步,否則重復第2步 重復第3、4步,直至搜索到出口頂點

生成的路徑特點:Breadth First Search Algorithm 在由Recursive Division Algorithm生成的51行51列迷宮中生成的路徑如下圖所示:

Java實現的迷宮游戲

以上就是Java實現的迷宮游戲的詳細內容,更多關于Java 迷宮游戲的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精精国产xxxx视频在线野外| 少妇久久久久| 夜夜嗨一区二区| 99久久九九| 国产综合激情| 成人日韩在线观看| 日韩免费小视频| 中文另类视频| 亚洲高清av| 日韩亚洲精品在线| 爽好久久久欧美精品| 在线日韩成人| 日韩精品国产欧美| 国产精品成人自拍| 精品美女在线视频| 日韩在线第七页| 黄色av日韩| 伊人国产精品| 麻豆久久一区二区| 亚洲天堂av影院| 在线一区视频观看| 亚洲激情中文| 亚洲开心激情| 嫩草伊人久久精品少妇av杨幂| 国产一区二区精品久| 久久精选视频| 午夜久久av| 国内在线观看一区二区三区 | 国产极品久久久久久久久波多结野| 国产精品主播| 波多视频一区| 最新日韩欧美| 亚洲精品在线国产| 国产精品777777在线播放| 日韩久久电影| 久久高清国产| 麻豆精品少妇| 性欧美69xoxoxoxo| 欧美日韩一区自拍| 另类专区亚洲| 免费成人在线视频观看| 国产精品中文| 亚洲福利免费| 国产欧美三级| 欧美成人日韩| 欧美日韩亚洲一区三区| 91看片一区| 亚洲一区av| 国产精品99精品一区二区三区∴| 欧美va亚洲va日韩∨a综合色| 日韩高清一区| 伊人网在线播放| 亚洲精品综合| 欧美国产偷国产精品三区| 首页亚洲欧美制服丝腿| 精品视频自拍| 喷白浆一区二区| 精品精品久久| 免费人成网站在线观看欧美高清| 九九99久久精品在免费线bt| 久久国产精品久久w女人spa| 国语精品一区| 亚洲精品电影| 美女国产一区二区三区| 亚洲欧美网站| 国产aⅴ精品一区二区四区| 美女91精品| 日本а中文在线天堂| 日本欧美一区二区| 国产99久久久国产精品成人免费| 91大神在线观看线路一区| 久久久久亚洲| 黄色网一区二区| 日韩二区在线观看| 91成人网在线观看| 成人一二三区| 欧美日韩一区自拍| 六月天综合网| 91精品一区二区三区综合在线爱| 国产精品亚洲人成在99www| 中日韩男男gay无套| 国产91在线播放精品| 日韩中文字幕| 欧美美女一区| 日韩成人a**站| 国产午夜久久av| 亚洲免费一区三区| 欧美精品九九| 日韩免费小视频| 国语对白精品一区二区| 国产精品天天看天天狠| 亚洲免费在线| 999久久久免费精品国产| 欧美aⅴ一区二区三区视频| 日韩欧美美女在线观看| 亚洲中字黄色| 九九久久婷婷| 韩国三级一区| 国产一区2区| 久久成人福利| 久久国内精品自在自线400部| 亚洲aⅴ网站| 亚洲色图综合| 亚洲精品亚洲人成在线观看| 蜜桃久久av| 亚洲精品网址| 国产专区一区| 99久久久久| 日本不良网站在线观看| 国产一区二区三区免费在线| 卡一精品卡二卡三网站乱码| 国产精品一区二区中文字幕| 欧美亚洲综合视频| 三级久久三级久久久| 亚洲青青久久| 日韩精品一二区| 亚洲天堂av资源在线观看| 蜜臀精品久久久久久蜜臀| 久久午夜精品| 亚洲欧洲免费| 日韩久久99| 久久国产尿小便嘘嘘| 国产伦一区二区三区| 日韩高清成人在线| 日韩国产91| 国产精品男女| 欧美激情麻豆| 久久久久久久欧美精品| 国产精品xxxav免费视频| 国产日韩一区二区三区在线| 日本午夜精品久久久久| 91精品国产自产精品男人的天堂| 欧美午夜网站| 欧美一级全黄| 国产精品欧美大片| 美女在线视频一区| 精品国产精品久久一区免费式| 国产日产一区| 久久亚洲黄色| 日产精品一区二区| 美女精品一区二区| 欧美三区四区| 亚洲在线一区| 91免费精品国偷自产在线在线| 国产欧美精品久久| 精品三级国产| 久久精品国产亚洲夜色av网站| 欧美日韩亚洲在线观看| aa亚洲婷婷| 免费观看在线综合| 国产日产一区| 色偷偷色偷偷色偷偷在线视频| 亚洲高清激情| 亚洲精品在线国产| 精品美女在线视频| 久久国产亚洲| 在线看片一区| 久久一区精品| 久久蜜桃资源一区二区老牛| 石原莉奈在线亚洲三区| 国产日韩一区二区三区在线 | 日韩精品免费一区二区夜夜嗨| 国产精品密蕾丝视频下载| аⅴ资源天堂资源库在线| 欧美精品一区二区久久| 日韩精品第二页| 精品美女在线视频| 亚洲电影在线一区二区三区| 午夜性色一区二区三区免费视频| 九九久久国产| 亚洲二区精品| 天堂va欧美ⅴa亚洲va一国产| 麻豆国产欧美一区二区三区| 国产 日韩 欧美一区| 91久久午夜| 国产亚洲第一伦理第一区| 韩国三级一区| 日韩精品福利一区二区三区| 成人亚洲精品| 欧美日韩激情在线一区二区三区| 综合激情网站| 国产h片在线观看| 亚洲一区导航| 色一区二区三区| 亚洲精品字幕| 成人亚洲欧美| 亚洲另类黄色| 久久久一本精品| 欧美一级一区| 四虎884aa成人精品最新| 日日夜夜免费精品| 色婷婷精品视频| 国产亚洲高清在线观看| 免费久久久久久久久| 欧美国产中文高清| 国产精品91一区二区三区| 国产高清亚洲| 在线精品亚洲| 亚洲1234区| 国产乱人伦丫前精品视频|