亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Scratch之自動(dòng)走迷宮

        2020-09-08 06:15:34陳新龍
        電腦報(bào) 2020年33期
        關(guān)鍵詞:迷宮優(yōu)先代碼

        陳新龍

        如何讓程序自己走迷宮是一個(gè)挺深?yuàn)W的問題,涉及生成迷宮的prim算法、深度優(yōu)先算法,走迷宮的廣度優(yōu)先算法、深度優(yōu)先算法等。不過那些都有一定難度,我們還是先從最簡單的一種算法開始吧,這種自動(dòng)走迷宮的算法其實(shí)是把自己當(dāng)成盲人走迷宮。這就是“左手法則”,這種法則只針對有墻壁且出口在墻壁上的迷宮(如果出口在大廳中心的情況就不適用了),只要順著墻壁走,都能走出去。因?yàn)槌隹诤腿肟诘膲Ρ诙际情]合曲線,所以這種“法則”在這類迷宮中是通用的。不過“左手法則”的效率太低,只適用于小范圍的固定迷宮,而大范圍的迷宮用這種算法會耗費(fèi)大量的時(shí)間。未來我也會和大家分享“深度優(yōu)先”等算法和如何自動(dòng)生成隨機(jī)迷宮。

        最經(jīng)典的“左(右)手法則”算法:在一張連通的迷宮圖中我們用左右任意一只手一直摸著墻就一定可以走出這個(gè)迷宮,也稱為繞墻走算法(或摸墻算法),是一種迷宮搜索的初級算法。左手法則的關(guān)鍵點(diǎn):

        1. 走到墻邊

        2. 監(jiān)測左邊是否有墻壁

        3. 監(jiān)測前面是否有墻壁

        4. 左右轉(zhuǎn)向

        下面我們把左手摸墻的走法用流程圖表示出來,更加方便讓大家理解。

        代碼分析:

        程序以網(wǎng)上找到的一個(gè)簡單迷宮為背景,迷宮墻壁為黑色。圓球角色Ball走迷宮,Bell鈴鐺為迷宮出口。

        我們需要自定義三個(gè)函數(shù)模塊積木,對應(yīng)左手法則的三個(gè)判斷(走到墻邊,判斷左邊是否有墻,判斷前邊是否有墻)。

        1. 走到墻邊

        這個(gè)功能就是讓角色一直沿著既定的方向前進(jìn),直到碰到墻壁。這里可以使用偵測中的“碰到顏色”積木來實(shí)現(xiàn)。

        2. 判斷左邊是否有墻

        根據(jù)流程圖結(jié)合代碼,要求角色每行動(dòng)一步就要判斷一次左邊是否存在墻壁。在這個(gè)自定義函數(shù)中,我們還要定義一個(gè)“左邊是否有墻”的變量,如果左邊存在墻壁,就將這個(gè)變量設(shè)為1,否則這個(gè)變量值就是0(一直重復(fù)判斷直到角色最終走出迷宮)。如何判斷左邊是否存在墻壁呢?我們可以讓角色往左邊移動(dòng)一步,然后再偵測一下是否碰到了墻壁(在本例中,墻壁顏色是黑色的,可以使用“碰到顏色黑”作為檢測條件)就可以了。當(dāng)左移一步碰到墻壁,則說明左側(cè)存在墻壁,如果沒有碰到墻壁,則說明左邊沒有墻壁。

        因?yàn)樽笠苿?dòng)作只是為了做偵測,并不能真的移過去,所以在檢測完畢后還要將角色進(jìn)行復(fù)位。把移動(dòng)的步數(shù)退回來,轉(zhuǎn)過的角度也要轉(zhuǎn)回來。

        3. 判斷前方是否有墻

        這個(gè)功能和判斷左邊是否有墻的方法一致,也需要添加“前邊是否有墻”變量,用“碰到顏色黑”為條件。當(dāng)前進(jìn)一步碰到墻壁,則說明前方存在墻壁,變量值為1,如果沒有碰到墻壁,則說明左邊沒有墻壁,變量值為0。并退回到原處。

        接下來看分析主程序的代碼部分,設(shè)置變量初始值為0,恢復(fù)角色初始位置,設(shè)置角色大小方向。走到墻邊,然后開始進(jìn)行角色移動(dòng)過程的兩種判斷,重復(fù)執(zhí)行直到角色到達(dá)終點(diǎn)也就是碰到Bell,結(jié)束循環(huán)。在循環(huán)的過程中先判斷左邊是否有墻壁,當(dāng)左邊沒墻時(shí)向左轉(zhuǎn),且角色前進(jìn)一步。這個(gè)前進(jìn)移動(dòng)非常重要,如果忘記寫前進(jìn)代碼的話,會造成角色原地打轉(zhuǎn)的Bug。當(dāng)左邊有墻時(shí),才可以進(jìn)行前方是否有墻壁的判斷。如果前方存在墻壁,因?yàn)檫@時(shí)左邊前面都有墻壁,我們只能右轉(zhuǎn),注意只是右轉(zhuǎn)并沒有前進(jìn)。如果判斷前方?jīng)]有墻壁,那么此時(shí)就可以放心地前進(jìn)一步。最終角色會一直沿自己左邊的墻壁運(yùn)動(dòng)直到終點(diǎn),走出迷宮。

        今天用最簡單的左手法則算法完成了自動(dòng)走迷宮的目標(biāo),對算法有了一點(diǎn)最基礎(chǔ)的了解,在未來的時(shí)間里,我也會和大家分享深度優(yōu)先算法和遞歸的算法,更快地走出迷宮。并學(xué)會自動(dòng)生成隨機(jī)迷宮地圖。

        猜你喜歡
        迷宮優(yōu)先代碼
        40年,教育優(yōu)先
        商周刊(2018年25期)2019-01-08 03:31:08
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        多端傳播,何者優(yōu)先?
        傳媒評論(2018年5期)2018-07-09 06:05:26
        大迷宮
        站在“健康優(yōu)先”的風(fēng)口上
        迷宮
        捕網(wǎng)迷宮
        91九色视频在线国产| 囯产精品无码va一区二区| 国产成人av综合色| 美女被黑人巨大入侵的的视频| 中文字幕免费在线观看动作大片 | 肉色丝袜足j视频国产| 亚洲日本中文字幕天天更新| 揄拍成人国产精品视频| 久久久国产精品免费无卡顿| 三级日本午夜在线观看| 免费日本一区二区三区视频| 亚洲人成网站18禁止久久影院| 欧美日韩亚洲成色二本道三区| 色av色婷婷18人妻久久久| 日本本土精品午夜视频| 久久人妻无码一区二区| 国产精品白浆一区二小说| 最新永久免费AV网站| 国产真实一区二区三区| 帮老师解开蕾丝奶罩吸乳网站| 2021久久最新国产精品| 精品亚亚洲成av人片在线观看| 亚洲中文字幕精品乱码2021| 成人毛片一区二区| 2021精品国产综合久久| 国产又湿又爽又猛的视频| 五十六十日本老熟妇乱| 国产山东熟女48嗷嗷叫| 亚洲啊啊啊一区二区三区| 自拍偷拍 视频一区二区| 亚洲老妈激情一区二区三区 | 国产美女一区三区在线观看| 帅小伙自慰videogay男男| 国产看黄网站又黄又爽又色| 久久久久久人妻一区二区无码Av | 人人爽人人爽人人爽| 久久亚洲国产精品五月天| 极品美女调教喷水网站| 中文字幕人妻中文| 久久亚洲道色宗和久久| 亚洲一区二区三区精彩视频|