資訊內容
Scratch第十四講:鏈表的使用
鏈表大家編程的時候用的不多,所以也不太熟悉,今天CC哥著重講一下,看看小伙伴們是否能夠通過鏈表的使用能夠讓程序做得更有效率。
鏈表:在scratch里也翻譯成列表。也是變量的一種,但是是一組變量。相當于一個隊列。通常用在同一類的變量組。舉個例子吧,比如今天天氣如何?晴天?陰天?多云?雷陣雨?等等,這些就可以看成一組變量,因為都是描述天氣的。再比如今天是星期幾?周一到周日,7個變量,也可以看成有關周幾的一組變量。這樣的例子很多,比如都有哪幾門功課?公園里都有哪些花?家里有哪些家具?這些都可以看成一組組的變量。
這么一解釋,是不是小伙伴頓時豁然開朗,原來鏈表就是變量組呀,那用途是不是很廣泛呢?當然我們也可以把變量組中的一個個變量拿出來定義成單獨的變量,但是這樣你就會發現有大量的重復編程的內容。
我們今天用一個例子來講講變量的用法,首先我們先解釋一下鏈表的指令集。
CC哥創建了一個比賽的列表。第一條指令就是在列表的后面增加一個新的變量。第二條指令就是刪除變量組的某一條變量。(選項里包含了末尾和全部的選項,也就是可以直接把整個列表鏈表清空)第三條指令是插入指令。就是在某一項前面插入一個變量(此處也有兩個選項,可以插在末尾,可以隨機插入某個位置)。第四條是替換掉某個變量,也就是先刪除再插入了。(選項里也包括了末尾和隨機兩個選項)
這三條指令相當于參數的指令了。第一個是直接返回了鏈表中的某一項,第二個反饋整個鏈表有多少項。第三個是判斷整個鏈表中是否包含某一項目。
整個看起來是不是很像最基本的數據庫列表呀。
我們通過個小游戲來簡單熟悉一下:我們在屏幕上畫出三個軌道,讓小貓們在這個三個跑道上隨機的跑。
這個簡單的小動畫可以用很多方法實現,我們今天試試鏈表怎么用:
我們首先在屏幕上畫三條賽道(就畫三根線吧),然后我們創建一個賽道的列表,用來表示三條賽道的Y坐標。
如果變量內容簡單,可以直接在創建鏈表的時候,直接把變量初始內容填上。點賽道變量表的左下角的小+號就可以添加變量。
當然如果變量有規律的話,也可以通過在程序里初始化階段通過循環指令添加。這個大家可以自己研究。
程序分解:
1:不斷的克隆小貓。
2:把每個克隆小貓出現的位置放在隨機的賽道上。然后向右方跑。
第一部分的程序,很簡單。
第二段程序:
左邊的部分很簡單,關鍵是選擇賽道這條指令。這個是CC哥新建了個積木指令。指令里只有一條語句,就是設置Y坐標為賽道變量里面任意一項的值。(之所以采用新建一個選擇賽道這樣的指令是想大家養成一個好習慣,讓編程更具可讀性,和可管理性。習慣去把一組復雜的指令打包成一個指令,以后更加方便的編程和維護。)
通過這個小例子,大家是不是對鏈表有些熟悉啦。
CC哥仔細在網上研究了一下關于鏈表的經典例子,其中有一個能非常好的學習鏈表的例子,就是如何取不重復的隨機數。比如在1到10中任意選取五個不重復的隨機數。
重復的隨機數大家都會選,一條指令就做到了,那不重復的隨機數呢?其實不重復的隨機數應用很多,比如排雷的小游戲,你就不能把兩顆雷放在同一位置,還有打比賽,隨機抽取比賽隊伍時,就不能一個隊伍選兩次。很多游戲里的隨機選取都是不能重復的。
當然隨機選取不重復的方法也有很多,比如把隨機選取出來的數字與已經選取出來的數字做一一比對,如果重復再重新選取。
如果用鏈表的方法,效率就比較高:
1:從鏈表中任意選取一項。
2:將該項從鏈表中刪除。
3:重復第一步。
是不是很簡單,這樣就不會有重復的選項了。這個小程序就留給小伙伴們自己去做了。
聲明:本文章由網友投稿作為教育分享用途,如有侵權原作者可通過郵件及時和我們聯系刪除
