有時(shí)候我們的作品會(huì)有很多角色,甚至?xí)霈F(xiàn)很多相同的角色并且做著相同的事情,比如一起操練的戰(zhàn)士們,游戲中很多相同的怪獸。對(duì)于很多相同的角色的出現(xiàn),我們可以利用克隆技術(shù)來解決這一問題。
在Scratch編程中,我們可以在“控制”腳本中發(fā)現(xiàn)“克隆”指令模塊(圖1),克隆就是復(fù)制自己,任何角色都能使用克隆積木創(chuàng)建出自己或其他角色的克隆體,甚至連舞臺(tái)也可以使用克隆。
當(dāng)克隆發(fā)生的那一刻,克隆體會(huì)繼承原角色的所有狀態(tài)(圖2):包括當(dāng)前位置、方向、造型、效果屬性和所有腳本等,我們通過腳本“克隆”來感受下“繼承”的意思。
腳本是克隆體繼承原角色的所有屬性:先克隆一個(gè)原來的自己(黃色、位置在<0,0>點(diǎn)),然后原角色顏色增加25并向前移動(dòng)200步,這樣舞臺(tái)上就有兩個(gè)小貓了。
我們來執(zhí)行腳本程序(圖3):
當(dāng)我們按下空格鍵時(shí)舞臺(tái)上出現(xiàn)兩只小貓,當(dāng)我們?cè)侔聪驴崭矜I時(shí)舞臺(tái)上不是三只小貓,而是四只小貓,這是為什么呢?原來克隆體還會(huì)繼承原角色的所有代碼(圖4)。
第1次按空格鍵時(shí),克隆體繼承了原角色的所有屬性和代碼,當(dāng)再次按空格鍵時(shí)原角色和克隆體都要執(zhí)行“克隆自己”指令模塊,角色數(shù)量的增長(zhǎng)是以指數(shù)級(jí)增長(zhǎng),即2的n(次數(shù))方。
如果我們想一次只克隆一個(gè),我們通常用以下的代碼(圖5):
這段代碼的核心是“當(dāng)綠旗被點(diǎn)擊”,因?yàn)椤爱?dāng)綠旗被點(diǎn)擊”在腳本程序中只執(zhí)行一次,所以克隆體的代碼將不被執(zhí)行(圖6)。