国产乱子伦高清露脸对白-国产精品欧美久久久久天天影视-国产91视频一区-亚洲欧美日产综合在线网-黄视频网站在线看-国产欧美亚洲精品第1页-亚洲www在线-大学生女人三级在线播放-日本在线视频www鲁啊鲁-国产成人精品一区二区仙踪林-69精品欧美一区二区三区-成人欧美亚洲-日本污污网站-中国妞xxxhd露脸偷拍视频-国产精品aⅴ在线观看-精品中文字幕在线

極客小將

您現在的位置是:首頁 » scratch編程資訊

資訊內容

Scratch第五十三講:自動生成迷宮

極客小將2021-01-21-
想免費學編程,就請點擊上面的藍字:跟我學Scratch編程,關注CC哥。 翻一下CC哥做的教學帖子,應該是自動走迷宮這個帖子最受歡迎。不過這個游戲里的迷宮是CC哥在網上下的。當時就想應該自己做個自動生成迷宮的程序,只是一直沒動手,這星期終于把這個程序給做

想免費學編程,就請點擊上面的藍字:跟我學Scratch編程,關注CC哥。

翻一下CC哥做的教學帖子,應該是自動走迷宮這個帖子最受歡迎。不過這個游戲里的迷宮是CC哥在網上下的。當時就想應該自己做個自動生成迷宮的程序,只是一直沒動手,這星期終于把這個程序給做出來了,分享給大家。下一講我們再做如何用新的算法自動走迷宮。https://cdn.china-scratch.com/Public/Home/images/grey.gif

https://cdn.china-scratch.com/timg/190702/213319EN-1.gif

是不是很沒有動畫效果https://cdn.china-scratch.com/Public/Home/images/grey.gifhttps://cdn.china-scratch.com/Public/Home/images/grey.gif,CC哥特意在做的時候把刷屏給關了,所以看著就是秒成地圖了。

紅色的方塊表示起點。終點我們可以假設在右下角。

自動畫迷宮最關鍵的就是算法,CC哥用的是Prim算法做的迷宮算法,這種算法畫出來的迷宮更適合游戲使用。

在這個游戲里我們把綠色當成路,把淺紅色當成墻。也就是一個角色的兩種造型。我還是喜歡用克隆做,而不是用畫圖的形式去做。其實區別不大,因為所有的計算都是通過算法完成的,角色之間沒什么互動,我們可以根據算法計算出來的迷宮結果,用克隆去畫這個迷宮,也可以用圖章去畫。每個人習慣不同。

讓我們看看程序怎么做的吧:

生成一個只有墻的迷宮

upload/article/images/2021-01-21/75a9b499ca16de63961db8262e194abc.jpg

這個簡單,代碼也不用講了,大家把位置和坐標只要確定好,畫得漂亮一些就行。在克隆的時候要注意,我引入了一個編號的私有變量,也就是要標明每一個克隆體的編號。確保后面的行動能找到對應的克隆體。我之所以用自定義命令去生成方陣,主要的目的還是不想有刷屏效果,這樣方陣可以秒成。這個技巧前面的帖子里反復都講過,就不重復了。

upload/article/images/2021-01-21/63de254a6349699cd8fb68cc770dadaf.jpg

另外我還引入了一個列表,標明每一個克隆體的狀態,是墻還是路,列表的順序號對應的就是克隆體的編號,列表的內容對應的是墻還是路,墻為零,路為1。

upload/article/images/2021-01-21/d47918505fc32888441c05dc5f07aac0.jpg

全部都是墻,所以都是零。

迷宮生成算法

下面就是本次講座的關鍵部分,就是迷宮的算法。CC哥另外導入一個角色,用來做算法的程序,沒有放到迷宮方塊的角色里。

upload/article/images/2021-01-21/b90254d7829c60140b3ffd64dfe00edc.jpg


算法概述:

1.建立兩個數組,一個是用于存儲地圖的二維數組α,另一個是用于存儲待處理的墻的數組β。

2.將α的所有方格全部初始化為墻。

????? 3.選定起點,并將該位置的墻變為路,將其四周的四塊置入β數組中(出界的直接篩掉,就不說了)。

4.當β數組不為空時,循環以下步驟

1)從β數組中隨機選擇一塊,暫且叫他A。

2)遍歷該方塊四周,并選定其中的某一塊為路的方塊,暫且叫他B。

3)判斷相對于A,在B的對側的方塊C是否為墻(假如B在A左側,就判定A右邊的方塊;B在A上方,就判定A下方的方塊;以此類推……),若為墻,則:

????????①將A、C均置為路。

????????②將C周圍是墻的所有方塊,均置入β數組中。

?4)將A從β數組中去掉。


這段算法就是迷宮的生成算法,CC哥從網上找的,下面我們看看Scratch怎么做:

1和2步剛才基本上已經做了,我們設置了一個列表,用來存儲迷宮地圖上所有的方塊,另外我也把這個列表里的每一個變量設置成零,代表全部初始化成墻。同時另外再建臨時待處理的墻的列表。

所以關鍵是第三步和第四步:

upload/article/images/2021-01-21/d7d684b37e1873eadd2e417f7c4184a0.jpg

第三步:選定起點,起點我們定為第一個方塊,然后把周邊的方塊放到待處理的墻列表中。

這里面有一個自定義的命令,“返回周邊情況”,這個命令是用來檢測指定的方塊周邊的路和墻的狀況。會將周邊的墻和路分別放到兩個臨時的列表中:“周邊墻”和“周邊路”這兩個列表。

我們把第一個方塊進行檢測,然后把返回都周邊墻的數據填入到待處理墻列表中。

(這個返回周邊情況的代碼有點長,主要是要測試上下左右的四個方塊是路還是墻,同時還要對方塊的位置進行判斷,處理好當方塊位于邊界的情況。代碼并不復雜,就是找到四邊的方塊的編號,然后去全路徑狀態列表里讀取這個方塊是墻還是路,分別放到不同的列表里。)

upload/article/images/2021-01-21/b7e9caf3c91b385d8cb04d90feb32743.jpg

upload/article/images/2021-01-21/b76157011bc0bec77a1992d5e9fa2abe.jpg

第四步:

接下來就是做算法中的第四步,也是關鍵的一步:

為了跟算法描述對應,我也用了ABC三個變量來對應算法描述,方便大家閱讀代碼。

1:先從待處理的墻列表中隨機抽取一個數據,也就是隨機選一個方塊A。

2:對這個方塊的四周進行檢測,返回這個方塊周邊為路的列表。

3:從方塊A周邊路的列表中隨機選擇一個路的方塊定義為B。

4:然后根據算法描述,找到C的位置,判斷C是否為墻,如果為墻,就把他四周的所有的墻都放到待處理的墻列表中去,同時把A和C都設置成路。如果不是就什么也不做。

upload/article/images/2021-01-21/dbacb1b64e9fec1ebbeded2b3c42dcd5.jpg

為了找C的位置,我單獨做了一條命令,代碼有點長,其實就是判斷A和B的位置的特殊情況,比如B在A的左邊,而又A在最后面一列,那就沒有C了。

upload/article/images/2021-01-21/a3a9204c734ad4cd017e79e72e4553c0.jpg

(有點長就不全部截屏了)

找到C的位置后,我又做了一條自定義的命令來處理剩下的操作。

upload/article/images/2021-01-21/2917c3a0cbb6df881b83d9ac877e357f.jpg

5:處理完了C,然后就把A從待處理列表中刪除掉。

重復這5步過程,直到待處理的列表中沒有數據,那么迷宮就生成完畢了。

通過迷宮算法,最后的全路徑狀態列表中就有了整個迷宮的數據,每一個方塊應該是路還是墻都清清楚楚。隨后,我們只需要發一條消息刷新一下克隆體的狀態,讓克隆體的造型跟我們的迷宮列表一一對應就好了。

upload/article/images/2021-01-21/7b2232a7d7d877670cf6165cda45c6ac.jpg

(當然,這部分代碼是在迷宮方塊的角色里,用消息來控制克隆體真是一個方便的方法。https://cdn.china-scratch.com/Public/Home/images/grey.gif

今天的程序相對來說不復雜,關鍵是讓大家知道有這么一套自動生成迷宮的算法,用這個方法可以自由的生成各種難度的迷宮,是不是很有意思。

輸入標題

上次做自動走迷宮其實沒什么算法,就是一直沿著左邊走的瞎子走法,CC哥一直想做睜著眼睛的走法,也就是用算法來盡量很快的走出迷宮。那么下一講CC哥就跟大家試試用遞歸回溯的方法來快速睜著眼睛走出迷宮。https://cdn.china-scratch.com/Public/Home/images/grey.gif


聲明:本文章由網友投稿作為教育分享用途,如有侵權原作者可通過郵件及時和我們聯系刪除

預約試聽課

已有385人預約都是免費的,你也試試吧...

国产乱子伦高清露脸对白-国产精品欧美久久久久天天影视-国产91视频一区-亚洲欧美日产综合在线网-黄视频网站在线看-国产欧美亚洲精品第1页-亚洲www在线-大学生女人三级在线播放-日本在线视频www鲁啊鲁-国产成人精品一区二区仙踪林-69精品欧美一区二区三区-成人欧美亚洲-日本污污网站-中国妞xxxhd露脸偷拍视频-国产精品aⅴ在线观看-精品中文字幕在线

        中文字幕精品一区二区三区在线| 91av视频免费观看| www.-级毛片线天内射视视| xxxx一级片| 日韩欧美不卡在线| jizz欧美性11| 少妇av一区二区三区无码| 亚洲精品午夜在线观看| 国产尤物av一区二区三区| 欧美日韩第二页| ijzzijzzij亚洲大全| 凹凸国产熟女精品视频| 中国黄色片免费看| 日本免费观看网站| 亚洲熟妇无码一区二区三区导航| 中日韩av在线播放| 久草精品在线播放| 欧美精品一区二区三区三州| 日韩欧美国产片| 日本少妇高潮喷水视频| 黄色网zhan| 久久精品久久99| 无码人妻h动漫| 日韩成人三级视频| 中文字幕第66页| 三级在线免费看| 青青青免费在线| 成人性做爰片免费视频| 亚洲一级片免费| 日韩国产精品毛片| www亚洲国产| 天天操狠狠操夜夜操| 欧美日韩亚洲一| 免费无码毛片一区二三区| 欧美少妇一区二区三区| theporn国产精品| 中文字幕第80页| 在线观看的毛片| 亚洲色精品三区二区一区| 欧美一级视频免费看| 人妻少妇精品久久| 国产精品无码av在线播放| 超薄肉色丝袜足j调教99| 亚洲免费黄色网| 欧美特级aaa| 美女少妇一区二区| 午夜视频在线瓜伦| 青青草精品视频在线观看| 噼里啪啦国语在线观看免费版高清版| 国产在线观看福利| 老头吃奶性行交视频| 午夜免费一区二区| 91热这里只有精品| 91xxx视频| 真人抽搐一进一出视频| 免费av手机在线观看| 日韩欧美视频网站| 久草在在线视频| 日本高清久久久| 在线一区二区不卡| 污色网站在线观看| 日韩一级免费看| 亚洲熟妇av一区二区三区漫画| 国产美女三级视频| 少妇一级淫免费放| 男人的天堂成人| 黄色一级视频在线播放| 人妻无码视频一区二区三区| 性刺激的欧美三级视频| 三级黄色片播放| 国产玉足脚交久久欧美| 国产又大又硬又粗| av中文字幕网址| 福利在线一区二区| 麻豆av免费在线| av动漫免费观看| 日本日本19xxxⅹhd乱影响| 久久久久免费精品| 中文字幕一区二区三区四区五区人 | 只有这里有精品| 成人免费性视频| 亚洲精品怡红院| 亚洲五码在线观看视频| 一本久道综合色婷婷五月| 国产高清精品软男同| a在线视频观看| 日韩av一卡二卡三卡| 国产欧美日韩小视频| 亚洲视频第二页| 美女日批免费视频| 欧美亚洲视频一区| 给我免费播放片在线观看| 2021狠狠干| 国产精品wwwww| 天堂8在线天堂资源bt| 亚洲午夜精品一区| 99爱视频在线| 韩国黄色一级大片| 北条麻妃在线一区| 91精品国产91久久久久麻豆 主演| 中文字幕在线导航| 欧美日韩一道本| 亚洲免费av网| 777一区二区| 播放灌醉水嫩大学生国内精品| 久热在线视频观看| 国产欧美高清在线| 国产成人在线小视频| 免费观看黄色的网站| 欧美精品性生活| 精品一卡二卡三卡| 缅甸午夜性猛交xxxx| 精品国产乱码久久久久久1区二区| 黄色片久久久久| 国产美女网站在线观看| 法国空姐在线观看免费| 亚洲一区二区图片| 日韩av片专区| 亚洲午夜激情影院| 女人另类性混交zo| 我看黄色一级片| www亚洲成人| 色哟哟精品视频| 免费日韩中文字幕| 国产在线播放观看| 少妇人妻无码专区视频| 97在线免费视频观看| 三年中文高清在线观看第6集| 婷婷激情5月天| 99视频在线观看视频| 玖玖爱视频在线| 日日干日日操日日射| 精品久久久久久久无码| 天天操狠狠操夜夜操| 国产免费色视频| 男人午夜视频在线观看| 香蕉视频在线网址| 午夜探花在线观看| youjizz.com在线观看| 亚洲人精品午夜射精日韩 | 男人透女人免费视频| 日韩欧美xxxx| 欧美深夜福利视频| 国产高清视频网站| 欧美国产日韩另类| 国产精品视频一二三四区| 日韩精品一区二区免费| 中文字幕无码精品亚洲35| 播放灌醉水嫩大学生国内精品| 天堂一区在线观看| 成人免费看片视频在线观看| 精品嫩模一区二区三区| 成人在线观看你懂的| 国产免费视频传媒| 天堂av手机在线| 三级黄色片播放| 99草草国产熟女视频在线| 91小视频在线播放| 九九爱精品视频| 亚洲精品一二三四五区| 亚洲美女自拍偷拍| 久久精品无码中文字幕| 免费不卡av网站| 青娱乐自拍偷拍| 国产三级精品三级在线| 日本黄色片一级片| 我看黄色一级片| 成人免费aaa| 亚洲色图欧美自拍| 99色精品视频| 欧美少妇一级片| 久久人妻精品白浆国产| 成人免费在线网| 中文字幕免费高清在线| 免费毛片小视频| 男人天堂新网址| wwwwwxxxx日本| 欧美人成在线观看| 国产一区二区三区在线免费| 三级a三级三级三级a十八发禁止| 日韩xxxx视频| 黄色一级片网址| 熟妇人妻va精品中文字幕| 大j8黑人w巨大888a片| 国内外成人激情免费视频| 尤蜜粉嫩av国产一区二区三区| 青青青青草视频| 伊人精品视频在线观看| 超碰成人免费在线| 日本一道本久久| 熟女视频一区二区三区| 天天干天天操天天玩| 日本精品一区在线观看| 欧洲金发美女大战黑人| 艳母动漫在线观看| www激情五月| 国产精品一区二区小说| 久草精品在线播放| 男人揉女人奶房视频60分| 麻豆av免费在线|