文章|克隆體編程實踐與研究

2021-02-15 湯老師教你學Scratch編程

克隆體是少兒圖像化編程中一塊重要內容。運行克隆指令能產生一個與原角色相同的新角色,原角色稱為本體,新產生角色稱為克隆體。介紹克隆體編程的圖書和文章雖然很多,但是,大多數介紹不全面、不透徹,甚至也有很多謬誤摻雜其中。因此,總結克隆體編程的實踐,將其中規律性的內容進行歸納和提煉就顯得很有必要了。

一、克隆體編程的一般規律

克隆體可以繼承本體除腳本外的幾乎所有屬性,如當前位置、方向、造型、特效等。甚至本體的私有變量克隆體也會繼承下來,私有變量的值與產生克隆體時本體的值相同。「繼承」是面向對象編程技術中的一個重要概念。這種技術使得復用以前的代碼非常容易,能夠大大縮短開發周期,降低開發費用。繼承就是子類繼承父類的特徵和行為,使得子類對象(實例)具有父類的屬性和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。因此,實際上本體是父類實例,克隆體是子類實例。克隆體編程的一般步驟是如圖1所示[1]。首先是執行[克隆自己]指令,然後[當作為克隆體啟動時]事件就會自然發生。在[當作為克隆體啟動時]事件下可以編寫執行各種行為的腳本,例如移動X步,右轉X度等。克隆體的行為執行完後,運行[刪除此克隆體]指令,它就可以退場了。除了[刪除此克隆體]指令可以讓克隆體退場,點擊程序的停止按鈕也會使克隆體瞬間消失。換句話說,克隆體只能在程序運行期間存在,程序停止運行後克隆體會被自動刪除。值得一提的是,克隆體的數量不是無上限的,最多產生301個。這樣的安排也是為了避免小朋友利用克隆體編程時,不斷產生克隆體造成計算機資源被耗盡,最終死機。有了這個限制,就可以盡情嘗試編程的樂趣而沒有當機的後顧之憂了。

二、腳本對克隆體和本體的可見性

圖2中含有[克隆自己]指令的腳本運行後,角色首先將自己顯示出來,然後將大小設置為20-60之間,再移動到隨機位置,旋轉隨機角度。此時,執行[克隆自己]指令就會生成一個與本體大小、位置和旋轉角度完全相同的克隆體,此時克隆體與本體是重疊在一起的。[克隆自己]腳本後面[隱藏]指令只會對本體起作用,並不會使克隆體隱藏。換句話說,在[克隆自己]指令所在的同一個程序塊中,[克隆自己]後面的指令只會對本體起作用,並不對克隆體起作用。那麼,如果我們想指揮克隆體是不是只能通過在[當作為克隆體啟動時]這個事件下編寫腳本才能實現呢?要想知道正確的答案可以通過運行圖3腳本進行驗證。

圖3中腳本運行後,按下空格鍵前只有本體在舞臺上不斷地從一個位置隨機運動到另外一個位置,而克隆體並不運動,效果如圖4所示。按下空格鍵後,克隆體才與本體一樣,開始在舞臺上從一個位置向另一個隨機位置做滑行運動,效果如圖5所示。根據圖3中腳本,克隆體產生前,本體通過[說XXX]指令顯示了「我是克隆體」這句話。但是,程序實際運行時,生成的克隆體並沒有說「我是克隆體」這句話。這是因為克隆體無法繼承本體的內部指令。克隆體產生後,雖然後面腳本還有重複執行[在1秒內滑行到隨機位置]指令,但是該指令顯然只對本體有效,而對克隆體並不起作用。根據程序實際運行效果,克隆體也會響應[當按下空格鍵]事件下的腳本。綜合前面的分析,我們可以得出結論:克隆體不繼承本體的腳本,產生克隆體程序塊後面的腳本對克隆體是不可見的,但是其他程序塊的指令對克隆體和本體都是可見的。因此,克隆體產生後,如果通過其他程序塊的腳本再執行克隆自己指令,克隆體也可以再克隆自己,這種情況下克隆體的產生數量將按指數規律增加。

三、克隆體編程創新方向

Scratch編程愛好者一般都很青睞克隆指令,因為利用它能做出很多頗有創意的效果。其實,總結起來,克隆體編程的創新方向主要包括三個方面。

(1)通過改變克隆指令前本體的造型、位置、特效等屬性

這個方法是初學者最喜歡嘗試的。老師講授克隆體編程後,學生通常會將本體換成水果、氣球、恐龍等其他的角色,然後在這些新的角色上執行克隆自己指令,或者通過增加本體的類型和克隆體的數量,達到一種特別震撼的效果。這些嘗試難度不高,對激發學生的興趣和學習積極性是特別有好處的。

(2)通過[當作為克隆體啟動時]事件下的腳本設定克隆體啟動後的運動效果

在[當作為克隆體啟動時]事件下編寫腳本設定克隆體啟動後的運動效果,如果再配合本體的運動,能夠創造出很多有意思的程序效果。圖4程序腳本就是這個創新方向的典型案例。程序腳本運行後,本體從舞臺中心不斷產生克隆體,而克隆體會按照啟動時的方向持續移動一段距離,移動的同時增加自身的大小,然後刪除。當同時存在的克隆體較多時就形成了一種從舞臺中心沿徑向旋轉運動的效果,如圖7所示。

(3)通過設置克隆體與本體、滑鼠、鍵盤或其他角色之間互動

克隆體產生後,可以編寫腳本使克隆體能夠響應本體、滑鼠、鍵盤和其他角色等的交互,這樣就能夠使克隆體更加智能化,使程序更加有趣。有人利用這種原理製作了成排的外星人克隆體,並且這些克隆體能向飛船角色不斷靠近,與飛船發射的子彈克隆體進行交互[2]。貪吃蛇遊戲中,利用克隆體與本體的互動,實現了蛇頭碰到蛇身體就停止遊戲的效果[2]。筆者利用克隆體與滑鼠之間的交互,實現了排斥力場的效果,腳本如圖8所示。圖8 腳本運行後,在舞臺區首先產生200個克隆體。然後,滑鼠在舞臺上移動式,克隆體距離滑鼠距離小於50就會產生排斥力作用,使克隆體向滑鼠相反方向移動,效果如圖9所示。圖10抗擊新冠遊戲是也是使用了病毒克隆體和藥水克隆體之間的交互。

四、克隆體精準控制

很多時候,我們需要控制克隆體按一定的數學或者物理規律運動。要對克隆體進行如此精準地控制,就必須對克隆體進行編號。對克隆體進行編號的原理就是利用了克隆體能夠繼承本體私有變量的特點。在克隆體編程中,如果需要對克隆體精準控制,需要事先設置兩個變量,其中一個為適用於所有角色(公共變量),另外一個是僅適用於當前角色(私有變量);私有變量作為克隆體的編號,公共變量用於給編號賦值。給克隆體編號的方法有兩種:第一種方法是[克隆自己]指令執行之前,將本體編號設置為克隆體編號預期值,然後克隆體的編號也會和本體數值一樣,如圖11腳本所示;第二種方法是本體的編號不變,當每一個克隆體啟動時將公共變量設置為克隆體編號的預期值,然後將編號設置為公共變量值,如圖11腳本所示。圖11和圖12兩種方法運行後得到的程序效果是一樣的,如圖13所示。但是兩種方法完成克隆體編程後,本體的編號是不同的。如果編程中需要使用本體的編號,則應該認識到上述兩種方法完成克隆體編號後本體最終編號的不同。

給克隆體進行編號後,就可以根據編號精準控制克隆體了。本體生成不同若干大小不一的克隆體,根據克隆體編號調用他們,可以使他們按照大小進行排序[3](效果如圖14所示),演示各種排序算法[4](效果如圖15所示),動態組合出數學函數曲線[5](效果如圖16所示),還可以使克隆體按照正態分布運動,並模擬病毒傳播的過程[6] (效果如圖17所示)。

五、結論

(1)克隆體繼承本體的位置、方向、造型、特效,甚至私有變量等,但是不繼承本體的腳本。可以通過在[當作為克隆體啟動時]事件下編寫腳本使克隆體執行各種行為。克隆體數量的上限是301個。

(2)克隆體不繼承本體的腳本,產生克隆體程序塊後面的腳本對克隆體是不可見的,但是其他程序塊的指令對克隆體和本體都是可見的。

(3)克隆體編程可以通過改變執行克隆指令前本體的造型、位置、特效等屬性;在[當作為克隆體啟動時]事件下腳本設定克隆體啟動後的運動效果;使克隆體與本體、滑鼠、鍵盤或其他角色互動三個方面進行創新。

(4)為了精準控制克隆體,必須對克隆體編號。克隆體編號可以在克隆指令前通過改變本體的編號實現,也可以在克隆體啟動時給克隆體編號。兩種方法的區別在於克隆體編號完成後本體的編號不同。

參考文獻

[1]湯老師教你學Scratch編程.五顏六色的泡泡-無編號克隆[EB/OL].[2020-12-18].

https://mp.weixin.qq.com/s/qKSVN8hr9YxYSL7SIXZMfQ

[2]Derek Breen.達人迷·Scratch趣味編程16例[M].北京:人民郵電出版社,2017:231,277-286.

[3]湯老師教你學Scratch編程.小螃蟹排排隊-生成和操作克隆體[EB/OL].[2019-11-13].

https://mp.weixin.qq.com/s/Hl4HZxGWfuIV9ieq0rKvgg

[4]湯老師教你學Scratch編程. Scratch不能實現冒泡法和選擇法排序?[EB/OL].[2019-12-03].

https://mp.weixin.qq.com/s/D58z6v8QYlqlF_Wi1Y4i6w

[5] 6湯老師教你學Scratch編程.數學之美-動態變化正弦曲線[EB/OL].[2019-12-03].

https://mp.weixin.qq.com/s/7MHsLThfU94CUUdR76saiw

[6]湯老師教你學Scratch編程.編程告訴你新型冠狀病毒肺炎怎麼傳播[EB/OL].[2020-02-13].

https://mp.weixin.qq.com/s/d-uUpBtaT23YQcJp65azNw

相關焦點

  • Scratch全國少兒編程競賽獲獎作品《遇見2030》解析
    可以看到,如果克隆體的造型編號等於1,首先會切換成相應的造型,並且初始化了位置與大小,克隆體會從屏幕的頂端中間偏左側一點的位置開始移動,一開始的大小只有10%。接著,克隆體的位置與大小就會不停的改變,我們知道在上面的角色中車速這個變量被設置為4,所以重複執行的裡面,克隆體x坐標每次會增加-4×0.5=-2,也就是減少2,所以克隆體會向左移動,而y坐標每次會增加-4,也就是減少4,克隆體會向下移動,它們結合起來克隆體就是不斷向屏幕左下角移動的過程,同時,它的大小每次會增加4×0.14=0.56,會越來越大,直到克隆體的大小大於54的時候,重複執行就停止了,最後將這個克隆體刪除掉
  • 計算機專業大三,沒參加過比賽和科研實踐,編程能力差,該怎麼辦
    首先,對於計算機專業的同學來說,在進入到大三之後,確實在時間上已經不太允許再參加一些專業比賽,或者是科研實踐活動了,有考研計劃的同學需要進入到備考階段了,而有就業計劃的同學,則需要按照實習崗位的要求進行準備了。
  • Julia程式語言:地球物理研究的新選擇
    Julia是一種新的程式語言,一種函數式程式語言,一種面向科學技術計算的高性能動態高級程序設計語言。我們在上一篇文章(《Julia:一種新的科學計算程式語言》)中已經詳細介紹了Julia程式語言的特點和主要應用領域,本文將介紹Julia語言在地球物理研究中的應用情況。
  • 少兒編程--Scratch製作阿星吃蛋糕小遊戲
    Scratch是由美國麻省理工學院(MIT)設計開發的少兒編程工具。大家以搭積木的形式輕鬆地學習編程思維。蛋糕需要實現的效果是,需要不斷的克隆自己,並讓克隆體向右飛過去。當飛行中碰到了阿星,蛋糕要消失(隱藏),阿星得一分。如果在飛行中沒有被吃掉,到達右側的時候,蛋糕也要消失掉。
  • 不思議迷宮克隆體圖鑑 克隆體圖鑑大全
    看到有不少小夥伴在求不思議迷宮克隆體圖鑑,小編就整理了一份,一起來看看吧!
  • 不可錯過的Scratch積木編程——塔防戰
    Scratch 遊戲編程課程——登陸戰【遊戲描述】一款塔防類射擊小遊戲,玩家操作一門可旋轉的炮打掉從海中登陸的士兵,一旦士兵接觸到炮塔,意味攻破了你的防守,遊戲結束。【編程步驟】難度2星1背景,封面背景連同遊戲背景使用同一張。本遊戲只有個開始按鈕。2.角色。需要這些角色,有些角色不止一個造型。以上有多個造型的角色,素材均來自網際網路,可以自行搜索,或製作。
  • 拳願阿修羅:王馬是十鬼蛇二虎的克隆體,歷代虎之器都是他
    那張臉的人,全是克隆體。有的人可能看不懂這段話,或者覺得筆者在胡說八道。希望你能耐下心的看下去,筆者這麼說是有依據的。先把論調定下來,每一個虎之器的長相都和王馬一模一樣,因為就是這張臉,創造的預借。為什麼會有這麼多的克隆體原因也很簡單?想要永生不死。坂東研究的課題就是精神轉移。
  • 編程進中小學課程,應該警惕什麼?
    答覆函從三個方面介紹了近幾年編程教育的工作進展情況,表示編程教育等信息技術已經納入到小學、初中科學課程和中小學綜合實踐活動課程,高中階段也已專門開設了信息技術課程。這個新聞在網絡上引起了相當大的爭議。教訓就是太偏重技術應用,忽視了基礎研究。這一點華為創始人任正非看得非常清楚。他最近在不少大學發表的講話中不斷地表達了基礎研究的關切,在與發達國家的競爭中,基礎研究是我們的短板。因此,華為在全球招募了不少並不從事應用研究的數學家、物理學家,實行天才計劃招募年輕的天才大學生加盟,以此充實華為的研究基礎。他呼籲大學要重點支持基礎研究,特別是數學、理論物理、生化這些基礎學科。
  • scratch3.0圖形化編程軟體製作益智類小遊戲「直升機」
    【原創】文章全部內容皆為作者原創,如有轉載請註明出處這是我在百度上搜索到的內容:軟體界面角色Helicopter1造型:這個角色是我在「慧編程」軟體上找到的,感興趣的同學可以去查找我2020年3月25日星期三發布的視頻或圖集
  • 帝王編程
    以下內容是關於帝王編程的來龍去脈,還有它的應用方式與象徵意義。類似於精神控制的儀式與實踐,在人類的歷史上並不是沒有先例。最早探討利用神秘學來操縱心靈的是一些古書記載,其中一本典籍就是埃及的《死者之書》( Book of the Dead )。
  • VIPCODE與樂博樂博達成戰略合作,打造編程教育OMO最佳實踐
    12月22日,少兒編程教育品牌VIPCODE成功舉辦了「三生萬物,創見未來」三周年慶典。活動現場,VIPCODE與機器人編程領導品牌樂博樂博籤署了戰略合作協議,VIPCODE創始人唐亮先生,樂博樂博總裁周煒先生出席籤約儀式。盛通股份總裁慄延秋女士,盛通股份董事長、盛通教育集團總裁賈春琳先生等嘉賓共同見證了此次合作的籤約。
  • 原來學編程不一定要數學好,看了最新研究我鬆了一口氣
    一直以來,我們都認可數學在編程學習中的重要性,雖然我們很多程式設計師對這個話題有不同的理解,不過學好編程就要有紮實的數學功底,這個觀點大家可能殊途,但往往同歸,對它並沒有多大的異議。不過最近的MIT神經科學家在eLife期刊發表了一項新研究,則給出了不同的觀點。
  • 細思極恐的靈籠:面具男為馬克的克隆體,三大法則因馬克而生
    從他的話語中可以得知,三大法則是在馬克來到燈塔之後才設定的,從某種程度上來說,三大法則就是因馬克而生的,再結合之前在生態密集區見到的小馬克的克隆體,差點和冉冰在晨曦大廳完成任務的面具男,可能也是馬克的一個克隆體,接下來給大家分析一下。
  • 華東師範大學周宏老師授課編程貓小夥伴
    本網12月18日訊 作為貓廠高校合作發展部首次主辦的「編程課程開發思路」線上授課,華東師範大學周宏老師於2020年12月15號開展《基於點貓KITTEN計算思維課程開發》線上交流研討會,帶領貓廠小夥伴感受編程的魅力,以此響應教育部號召,深化產教融合,促進校企合作。
  • 工控上位機編程學習技巧
    幾年前,臺灣著名技術作家侯捷先生曾經寫過一篇影響很大的書評文章,叫做《MFC四大天王》。文章的意思是說在MFC的浩瀚書海中,只要認真研讀和學習其中四本,就可以「五嶽歸來不看山」。侯先生雖以MFC為例,但是這個道理卻同樣適合於MFC之外的很多具體技術領域,這不能不說是一個有趣的統計現象。
  • NOC2020順利閉幕 核桃編程學員強勢包攬全部獎項
    近日,經教育部批准的「白名單」競賽活動——2020年第十八屆全國中小學生信息技術創新與實踐大賽(簡稱「NOC大賽」)決賽順利閉幕,近400名核桃編程學員包攬NOC大賽一、二、三等全部獎項。讓人們眼前一亮的是,共有四名核桃編程學員取得滿分成績,其中來自常州的8歲核桃編程學員王源億,綜合運用程序結構、數據、運算、查找等編程知識,以常州特色美食、剪紙藝術、著名景點為主題,編程作品兼具觀賞性和娛樂性,獲得了全國評委的一致好評。
  • 小碼王亮相2020未來學校生態大會 校企合作共創編程基礎教育新高度
    、中國人工智慧學會中小學工作委員會秘書長袁中果,人大附中初中備課組組長、海澱區信息技術學科帶頭人、人大附中全國電腦作品競賽負責人袁繼平,北京市「西城區小學先進班級體」班主任林亦男,「跑童」流動少年宮公益服務項目組魏偉妮,小碼王產品總監陳昕等多位科技創新教育領域專家學者和一線校長傾情分享科創教育、編程教育在學校課程和教學中的實踐創新。
  • 好老師的標準是什麼 編程貓小火箭幼兒編程:眼裡有光,心裡有愛
    眾所周知,編程是實現人工智慧的重要橋梁,為此,編程貓於2019年1月便已著手布局低齡兒童編程賽道,在其自主研發的圖形化編程工具基礎上,重磅推出專為4~7歲兒童設計的「小火箭幼兒編程」產品,極大降低了兒童學習編程的門檻。敢於第一個吃螃蟹,就得敢於面對空白行業的挑戰。
  • 西瓜創客培養超百萬孩子編程思維,少兒編程納入中小學課程
    ,2016年就開始全國實施新的《國家核心課程大綱》中,首次將編程納入小學教學大綱,從小學一年級開始教授編程。人工智慧逐漸改變人們的生活方式,與人工智慧息息相關的編程教育,則是最貼合時代需求的高品質教育,從歷年以來政策不斷加持,本次教育部建議將編程教育納入中小學課程,更加體現了編程教育的重要性。
  • 編程界 12 位祖師爺級的 大牛,你知道哪幾位?
    Dennis RitchieDennis MacAlistair Ritchie,也被稱為 「dmr」(這是他在貝爾實驗室的用戶名稱),是 C 語言之父。C 語言已發展成為被最廣泛使用的程式語言之一。他是世界上最重要的計算機科學家之一,而且他也因為對 「數字時代」 所做的巨大貢獻而廣受讚譽。