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

- 上一篇
Scratch 基礎(chǔ)教學(xué)|第十一課: Scratch基本組件之運(yùn)算類功能塊詳解
hi,大家晚上好。上一節(jié)課主要給大家介紹了Scratch偵測(cè)類功能塊可實(shí)現(xiàn)的功能及每一個(gè)偵測(cè)類功能塊的具體用途及如何使用。 本節(jié)課主要和大家一塊了解并學(xué)習(xí)運(yùn)算類功能塊可實(shí)現(xiàn)哪些功能及每一個(gè)運(yùn)算類功能塊的具體使用。 本節(jié)課的課程目標(biāo)如下:
- 下一篇
用Scratch 解數(shù)學(xué)題的正確姿勢(shì)
如何用 Scratch 來(lái)解題。