資訊內容
學好Scratch必知的二三事,別樣的Scratch積木分類(下)
利利:上一篇文章當中,我們談到可以將Scratch當中的積木分為兩大類,分別是“基礎效果類”和“復雜功能類”。基礎效果類包含表現層以及交互層兩種,那么,復雜功能類積木包含哪些內容呢?
今天我們繼續(xù)來談Scratch當中的積木類別,以及這些積木的特點~
全文字數3300字,推薦閱讀時長12分鐘
復雜功能類積木及特點
基本解析
復雜邏輯類,分為邏輯層、數據層和優(yōu)化層,邏輯層又可以細化為“基礎邏輯”“優(yōu)化邏輯”和“角色邏輯”。
●?基礎邏輯:條件語句(如果...那么...)、循環(huán)語句(重復執(zhí)行)、條件表達式(偵測)
●?優(yōu)化邏輯:運算操作,以及與條件表達式相關的所有值類型積木(運算、較為復雜的偵測)
● 角色邏輯:背景切換、消息(廣播消息、接收消息)、克隆
復雜邏輯積木分類

邏輯層
基礎邏輯
基礎邏輯部分,包含編程的三大結構中的“循環(huán)結構”和“分支結構”,以及分支結構當中必不可少的“條件表達式 / 偵測條件”,主要對應于Scratch中“控制”與“偵測”兩大模塊中的大部分積木。
循環(huán)結構:重復執(zhí)行系列積木,對應于其他語言當中的while、for等語句
分支結構:如果...那么...系列積木,對應于其他語言當中的if else語句
偵測條件:菱形的偵測類積木,對應于其他語言當中的“條件表達式”,在偵測類模塊當中,提供了各種各樣的偵測條件,可以檢測當前角色是否碰到顏色、指定角色,判斷是否按下鼠標或某個鍵盤鍵位等等,這些偵測積木很簡單,但它們是組成分支結構以及部分循環(huán)結構的重要一環(huán)。
基礎邏輯積木的分類

各個基礎邏輯積木,能夠互相進行嵌套,形成更復雜的邏輯,實現更豐富多彩的功能。
多種多樣的嵌套關系

優(yōu)化邏輯
優(yōu)化邏輯,主要基于當前已經搭建好的邏輯功能,進行細節(jié)優(yōu)化與修繕,或者進行更復雜的控制(“偵測條件”更多樣而復雜),主要對應于Scratch中的“運算”模塊,以及各個模塊當中的“值類型”積木。
優(yōu)化邏輯中的各類積木

這些積木,對應于其他語言當中的各類運算(邏輯運算、算術運算、關系運算、字符操作、數學函數方法等)
在案例作品當中,優(yōu)化邏輯相關積木的加入,一方面,讓“偵測條件”變得復雜起來,便于我們更好地檢測角色狀態(tài),并根據角色狀態(tài)執(zhí)行相應功能;
另一方面,讓“基礎邏輯”(如果...那么...等)積木得到了優(yōu)化,降低了一個功能當中需要的積木量與復雜度。
實現復雜的偵測(點擊圖片可放大)

通過與或非,優(yōu)化如果...那么...等復雜的嵌套邏輯


碩碩
什么是值類型積木?
利利
在Scratch當中用于存儲值,“橢圓”形狀的積木


碩碩
還有哪些類型的積木呢?
利利
這是對Scratch另一種維度的分類,后面有機會我們單獨開文詳細來講吧~!

角色邏輯
角色邏輯,是能夠跨越角色進行操控的相關積木,主要對應于Scratch“事件”模塊當中的部分積木 —— 背景的切換、消息的廣播和接收、克隆。
角色邏輯相關的積木

背景的切換、消息的廣播和接收,隸屬于“事件類模塊”,但是和其他“事件類”積木,卻有所不同。
其他事件類積木,均需要用戶(作品的使用者)通過外部環(huán)境觸發(fā)(按下鍵盤、鼠標、點擊綠旗、發(fā)出聲響等等);
背景切換與廣播消息,由程序內部觸發(fā),并不直接受外部控制。
這兩種事件能夠將“角色”與“背景”、“角色”與“角色”連接在一起,是實現“跨角色跨背景”控制必不可少的積木。
恰恰是這種關聯(lián),進一步豐富了案例功能,最重要的是,讓Scratch制作的東西,從“案例”變成了“作品”!

碩碩
案例與作品的區(qū)別是什么?
利利
我們可以把案例理解為一個簡單的demo,簡單的樣例,它是一個作品的核心功能部分


碩碩
為何說,背景切換和消息廣播的功能,能夠把案例變成作品?
利利
如果希望一個作品當中包含“開始”“結束”“幫助”“游戲核心功能”等幾個部分,必然要出現多個場景(背景),不同角色在不同場景當中展示的效果也會有所不同。

利利
實現場景切換,并控制不同場景當中不同角色的狀態(tài),建立角色與角色之間的關系,都需要使用到此類(角色邏輯)積木。

克隆,隸屬于“控制類模塊”,它能夠基于一個角色,復制多個“虛擬”的相同角色(復制的角色不會出現在角色面板當中),并且能夠為這些“虛擬”角色設置不同的功能。
小貼士
背景切換、廣播消息事件的用法
使用背景切換、廣播消息,創(chuàng)建事件。
通過“當背景切換為”和“當接收到某消息”,來接收這些事件,并定義發(fā)生這些事件時要執(zhí)行的具體功能(積木組)。
事件的發(fā)生與接收

小貼士
關于特殊的響度檢測
響度是使用相對較少的一類積木,它隸屬于“基礎效果類 - 交互層”積木,用戶通過外部聲音的大小,來控制角色發(fā)生變化。
在前一篇文章當中,并沒有太多提及,所以,就在這里做個補充吧~哈哈
邏輯層積木小結
基礎邏輯、優(yōu)化邏輯、角色邏輯在案例當中的功能以及關系:
●?基礎邏輯:實現了對角色狀態(tài)的判斷;
●?優(yōu)化邏輯:在“基礎邏輯”之上,使用更少的積木,實現了對角色狀態(tài)“更精確更精細”的判斷;
●?角色邏輯:功能邏輯更復雜,實現角色與角色/背景間的邏輯與交互,多個類似角色的功能操作。
數據層
在Scratch中,充當數據層的積木,是變量和列表(均隸屬于變量模塊)。
在幾乎所有的編程語言當中,變量能夠存儲數據,也能夠優(yōu)化積木邏輯。
在Scratch當中,變量更多的作用在于存儲數據,而非優(yōu)化功能,這與Scratch本身特點相關。
此外,與其他語言相比,Scratch在數據存儲方面相對較為弱勢,只有“變量”和“一維列表”,無法使用多維列表(其他語言當中成為“多維數組”),也缺少了非常重要的“對象”。

路人甲
Scratch在數據層做得不好?
碩碩
數據存儲上的不便,的確會導致制作時的一些局限性,譬如在制作“需要存儲大量數據”或“有關聯(lián)數據”的項目時,相對比較復雜。

利利
Scratch在數據層上的這種處理方式,其實也是因Scratch軟件本身特點所限制的

碩碩
是的,既需要滿足“按照角色進行積木編寫”的功能,又需要滿足“漂亮的視覺呈現”,在數據層上自然會有根據整體軟件的定位做出一定的調整

利利
其實任何一門語言都不是萬能的,作為編程語言的使用者,要做的是了解這門語言,并將這門語言的優(yōu)勢和長處發(fā)揮到極致

優(yōu)化層
在Scratch中,目前我們還沒有提及的,就是“自制積木”了,這個模塊屬于優(yōu)化層積木,對應于其他語言當中的函數。
自制積木的作用,在于將一個角色當中通用功能“打包”起來,之后多次使用,增強積木組的復用性,提升積木組的擴展性。
優(yōu)化層 - 自制積木 - 通過參數控制具體功能

需要注意的是,自制積木,只能夠應用于當前角色當中,無法應用于所有角色(無法跨角色使用)。

路人甲
在Scratch當中,有沒有能夠應用于所有角色的“自制積木”(方法 / 函數)?
利利
沒有


路人甲
為何自制積木只能應用于當前的角色呢?
利利
在上一篇文章當中我們提及到,Scratch當中存在對象、方法、屬性,每個角色都是一個對象,自制積木,是定義在這個角色當中的,因此,自制積木是相應角色的方法。

文章傳送門:學好Scratch必知的二三事,別樣的Scratch積木分類(上)
簡言之,我們作為Scratch作品的編寫者,無權操作底層功能函數(方法),只能夠為角色 / 背景這些對象添加一些方法。
小貼士
沒有繼承功能的Scratch
在Scratch當中,角色和角色之間并沒有“繼承”關系。
當作品中,有多個角色存在相似功能時,雖然積木類似,但是都需要單獨編寫。
編寫時自然會比較“累”,好在我們還有“復制大法”……
總結 ~ ~ ~!
已經講解完Scratch所有積木的分類了,我們一起來回顧一下!
● 基礎效果類積木 —— 讓角色的屬性(樣式)能夠發(fā)生簡單的變化
●?基礎邏輯類積木 —— 對角色進行狀態(tài)檢測和控制,并根據角色狀態(tài)執(zhí)行不同的功能
●?優(yōu)化邏輯類積木 —— 使用更少的積木,對角色更精確更精細地檢測與控制
●?角色邏輯類積木 —— 實現角色與角色/背景間的邏輯與交互
●?數據類積木 —— 進行數據記錄,增強作品的可玩性
●?優(yōu)化類積木 —— 減少角色的積木量,增強積木擴展性
在了解Scratch積木分類之后,什么樣的學習順序更有利于我們又快又好的掌握Scratch呢?學習Scratch又有哪些注意事項呢?后面我們慢慢來談~
教育的路上,不忘初心!
聲明:本文章由網友投稿作為教育分享用途,如有侵權原作者可通過郵件及時和我們聯(lián)系刪除
