国产乱子伦高清露脸对白-国产精品欧美久久久久天天影视-国产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ⅴ在线观看-精品中文字幕在线

        99视频在线视频| 男人午夜视频在线观看| 国产原创popny丨九色| 成年人视频观看| 91视频 -- 69xx| 三上悠亚在线一区二区| 一二三av在线| 久草视频国产在线| 国产精品69页| 九九九久久久久久久| www.夜夜爱| 国产91色在线观看| 男人日女人的bb| aaa毛片在线观看| 三日本三级少妇三级99| 亚洲 欧美 综合 另类 中字| 欧美污视频网站| 992tv人人草| 午夜肉伦伦影院| 免费看啪啪网站| 激情五月宗合网| 一级日本黄色片| 日本www在线视频| 亚洲另类第一页| 777精品久无码人妻蜜桃| 最新中文字幕免费视频| 欧美中文字幕在线观看视频| 一本岛在线视频| 日韩在线综合网| 在线视频一二三区| 中文字幕在线观看第三页| 女女百合国产免费网站| 亚洲精品久久久中文字幕| 屁屁影院ccyy国产第一页| 手机看片福利盒子久久| 国产免费裸体视频| 一级片视频免费观看| 国产 日韩 亚洲 欧美| 欧美日韩一区二区三区电影| www.超碰com| 777精品久无码人妻蜜桃| 青青草综合视频| 欧美专区第二页| www.国产视频.com| 91视频免费版污| 农村妇女精品一二区| 国产一区二区视频播放| av影院在线播放| youjizz.com亚洲| 加勒比av中文字幕| 黄色av免费在线播放| 亚洲熟妇av一区二区三区漫画| 人人妻人人澡人人爽欧美一区 | 手机看片一级片| 国产激情在线观看视频| 精品视频一区二区在线| av免费中文字幕| 人妻少妇被粗大爽9797pw| xxxx18hd亚洲hd捆绑| 国产黄色片免费在线观看| 一本久道高清无码视频| 青青草国产免费| av之家在线观看| 日本a级片免费观看| 日本一区二区黄色| 99热成人精品热久久66| 黄色国产小视频| 日本高清一区二区视频| 国产毛片久久久久久| 四虎4hu永久免费入口| 久久久久福利视频| 3d动漫一区二区三区| 成人在线免费观看av| 精品久久久久久无码国产| 国产又黄又猛又粗又爽的视频| 三级a三级三级三级a十八发禁止| 亚洲欧美国产日韩综合| av不卡在线免费观看| 黄色一级片国产| 116极品美女午夜一级| 无码人妻精品一区二区三区66| wwwwwxxxx日本| 裸体裸乳免费看| www.av中文字幕| 中文字幕无码不卡免费视频| 欧美成人三级在线播放| 日本黄xxxxxxxxx100| 欧美精品久久久久久久免费| 美女网站免费观看视频| 欧美日韩一级在线| 日韩av黄色网址| 国产无遮挡猛进猛出免费软件| 亚洲第一成肉网| 日韩国产欧美亚洲| 欧洲美女亚洲激情| 欧美精品一区免费| 久久久精品高清| 青青青青在线视频| 久久久久久久久久一区二区| 免费人成自慰网站| 亚洲美女性囗交| 人妻少妇精品无码专区二区| www.se五月| 国产亚洲欧美在线视频| 亚洲一级片免费观看| 干日本少妇首页| 亚洲一区 在线播放| 五月婷婷深爱五月| 精品国产av无码一区二区三区| 日本人视频jizz页码69| 黄网站色视频免费观看| 中文字幕天天干| 国产成人精品视频免费看| 日韩不卡视频一区二区| 成年网站免费在线观看| 日韩在线第三页| 欧美大片在线播放| 97超碰在线视| 91精品视频国产| 亚洲黄色av片| 免费看涩涩视频| 丁香婷婷激情网| 成人黄色片视频| 男女高潮又爽又黄又无遮挡| 97av中文字幕| 亚洲成年人专区| 亚洲无在线观看| 91丝袜超薄交口足| 午夜精品久久久久久久99热影院| 久久婷婷五月综合色国产香蕉| 精品国产一区二区三区无码| 亚洲第一综合网站| 秋霞在线一区二区| av磁力番号网| 四虎影院一区二区| 青青草综合在线| 国产高清www| xxxx18hd亚洲hd捆绑| 国内精品在线观看视频| www插插插无码视频网站| 国产美女作爱全过程免费视频| 激情视频小说图片| 人妻互换免费中文字幕| 黄色成人在线免费观看| 国产 日韩 欧美在线| 成人网站免费观看入口| 久久久久人妻精品一区三寸| 青青在线视频观看| 欧美三级午夜理伦三级富婆| 天天干天天综合| 精品国产三级a∨在线| 麻豆传媒网站在线观看| www污在线观看| 凹凸日日摸日日碰夜夜爽1| 国产区二区三区| 欧美日韩在线免费观看视频| 青青草视频国产| 黄色免费观看视频网站| 欧美亚洲日本在线观看| 成年人网站av| 被灌满精子的波多野结衣| 欧美日韩第二页| www激情五月| 中文字幕无码精品亚洲资源网久久| 亚洲熟妇国产熟妇肥婆| 午夜免费看视频| 国产激情片在线观看| 777米奇影视第四色| 三日本三级少妇三级99| 久久黄色片视频| xxxx在线免费观看| 全黄性性激高免费视频| 三级视频中文字幕| 中文字幕人妻熟女人妻洋洋| 免费高清在线观看免费| 国产精品jizz在线观看老狼| 欧美日韩在线视频一区二区三区| 亚洲三级在线观看视频| 欧美老熟妇喷水| 波多野结衣激情| 亚洲不卡视频在线| 欧洲精品一区二区三区久久| 久久精品影视大全| 久久久久久久久久久99| 色噜噜狠狠一区二区三区狼国成人| 日韩一级片免费视频| 亚洲一级片免费观看| www黄色在线| 亚洲精品少妇一区二区| 最新国产黄色网址| 国产日产欧美视频| 激情五月六月婷婷| 在线播放av中文字幕| 日本va中文字幕| 水蜜桃色314在线观看| 8x8x华人在线| 永久免费黄色片| 一区二区三区四区毛片| www.国产区| 丰满少妇被猛烈进入高清播放|