官术网_书友最值得收藏!

二、動手練:閱兵方陣列隊行進

(一)實驗目的

讓小貓排成一個閱兵方陣,并且列隊行進。

(二)基本思路

我們首先創建一個小貓角色,名字叫Sprite1,然后讓這個小貓生成多個克隆體。比如方陣有3行2列,我們就生成6個克隆體,加上原始角色Sprite1,我們會看到一共有7只小貓。

在用克隆技術時,我們要注意下面幾點:

1)創建克隆體時使用的是“克隆自己”積木塊(在“控制”類里)。

2)當克隆體剛剛生成時,跟原角色是一模一樣的,當然了,后面克隆體可以改變自己的狀態。這里,我們讓角色每走到一個位置就克隆一次,這樣克隆的初始位置就有了。

3)克隆體執行哪段腳本呢?我們把克隆體要執行的腳本前面加上“當作為克隆體啟動時”積木(在“控制”類中),就是圖5-2中顯示的這個。

066-1

圖5-2 “當作為克隆體啟動時”積木

提醒一下:原始角色Sprite1的腳本前面是“當066-2被點擊”(在“事件”類),可不要弄混了?。?/p>

(三)編程步驟

(1)角色設計

只有一個角色小貓,名字叫Sprite1。

(2)變量設計

跟上一講一樣,我們設置兩個變量“幾行”和“幾列”,表示閱兵方陣的行數和列數;此外,我們還要新增加兩個變量“我的x坐標”“我的y坐標”。不過建立這兩個變量時一定要選擇“僅適用于當前角色”,否則所有克隆體的“我的x坐標”變量都是同樣的值,“我的y坐標”變量也都是同樣的值。

(3)過程描述與代碼展示

我們讓小貓從第一行的第一列開始,逐個去站位,每隔50步站一只;站滿了一隊就換下一隊,再從頭開始。不過站位時是“克隆”一個自己(見圖5-3中左側部分)。

067-1

圖5-3 用克隆技術實現的閱兵方陣腳本(左)及實驗結果(右)

(四)實驗結果

現在點擊綠旗,輸入行數和列數,你就會看到小貓排好方陣,然后每秒走一次了(見圖5-2中右側部分)。

注意,這六個克隆體的腳本相同,但是起始位置是各不相同的;每個克隆體的起始位置是創建克隆體時角色的位置。

(五)遇到的bug及改正過程

bug:今天我遇到一件奇怪的事情,一開始程序運行得好好的,突然再運行時小貓都不出現了。程序沒做任何改動啊,真奇怪!

改正:我查了半天,才發現一個低級錯誤——我不小心按到了角色區的顯示開關上,關閉了小貓的顯示。怪不得呢!重新打開顯示開關就好了。

(六)思考與延伸

我覺得克隆最大的好處就是避免了對每個角色重復編寫相同的腳本。

克隆很有用,但是也不能無限制地生成克隆體。當克隆體達到一定數量的時候,Scratch就會停止克隆。

我們可以自己測試一下,比如新建一個變量,將變量的初始值設置為0,每克隆一個就增加1,最后就可以看到最終的克隆體個數了。我試了一下,克隆到300個左右就無法繼續下去了。這是因為克隆體越多,需要的內存也越多,短時間內大量增加克隆體會導致計算機內存消耗極大,容易卡死。

那么,在使用克隆功能的過程中要如何解決這個問題呢?Scratch提供了一個“刪除此克隆體”的積木(在“控制”類中),在用完克隆體后要及時刪除。

主站蜘蛛池模板: 德安县| 永吉县| 聂荣县| 南江县| 庄河市| 通山县| 定州市| 高清| 日土县| 永清县| 黄龙县| 四川省| 山阴县| 蓝山县| 宁海县| 通渭县| 穆棱市| 开江县| 萨嘎县| 鄂托克旗| 女性| 陇川县| 凤山市| 泽普县| 德令哈市| 留坝县| 济阳县| 吉林市| 隆化县| 陇西县| 九龙县| 铁岭县| 思南县| 宣恩县| 游戏| 英德市| 北京市| 渝北区| 博客| 临沂市| 博客|