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

八、更復(fù)雜的Scratch程序

接下來我們來寫一個(gè)復(fù)雜一點(diǎn),也更有趣味的程序——托球游戲。這個(gè)游戲是這樣玩的:游戲里有一個(gè)彈力球從上方下落,玩家用鼠標(biāo)移動(dòng)一個(gè)板子去托球,盡量不讓球落地。球如果碰到板子或舞臺(tái)邊緣就會(huì)反彈,如果球沒被接住,落到了地板上,那么游戲終止。

下面我們開始編寫這個(gè)游戲程序。

第一步:設(shè)置舞臺(tái)背景

我們畫一條紫色線,表示地板。畫法是這樣的:首先把鼠標(biāo)放在背景設(shè)置區(qū)最下方的圖標(biāo)036-1上,然后在彈出的菜單條里點(diǎn)擊畫筆036-2,就會(huì)看到一個(gè)背景繪制界面;我們點(diǎn)擊左側(cè)的畫筆036-3,在舞臺(tái)背景的下方從左到右畫一條線即可,畫得不直也沒關(guān)系。現(xiàn)在背景繪制區(qū)如圖1-10左側(cè)部分所示。

036-4

圖1-10 托球游戲程序中的背景繪制(左)和角色選擇(右)

第二步:選定角色

我們創(chuàng)建兩個(gè)角色:一個(gè)是球板,另一個(gè)是彈力球。直接點(diǎn)擊角色設(shè)置區(qū)下方的036-5,從Scratch自帶的角色中選擇球和球板;每個(gè)角色都有一個(gè)名字,Scratch系統(tǒng)自動(dòng)給球這個(gè)角色起了一個(gè)名字,叫作Ball,給球板這個(gè)角色起的名字叫作Paddle。當(dāng)然,如果我們覺得這些名字不好聽的話,可以自行修改,重新命名。現(xiàn)在我們的角色設(shè)置區(qū)如圖1-10右側(cè)部分所示。

第三步:編寫球板的腳本

首先我們編寫球板的腳本,功能是:讓球板跟隨鼠標(biāo)左右移動(dòng)。編寫步驟如下:

1)先點(diǎn)擊角色設(shè)置區(qū)中的球板,開始編寫球板的腳本。

2)點(diǎn)擊積木區(qū)中的“事件”,拖出“當(dāng)037-1被點(diǎn)擊”積木,放入程序代碼區(qū)。

3)點(diǎn)擊積木區(qū)中的“運(yùn)動(dòng)”,拖出“移到x: -240 y: 40”積木,放入程序代碼區(qū),并接在“當(dāng)037-2被點(diǎn)擊”積木下方。因?yàn)槲覀兿胱屒虬逡婚_始處于(0,-80)位置,也就是舞臺(tái)靠下方一點(diǎn)的地方,所以我們把這個(gè)積木中的x改成0,y改成-80。

4)點(diǎn)擊積木區(qū)中的“控制”,拖出“重復(fù)執(zhí)行”積木,接在“移到”積木下面。

點(diǎn)擊積木區(qū)中的“運(yùn)動(dòng)”,拖出“將x坐標(biāo)設(shè)為-240”積木放入程序代碼區(qū),并放在“重復(fù)執(zhí)行”積木里面。

5)為了讓球板跟隨鼠標(biāo)移動(dòng),我們點(diǎn)擊積木區(qū)中的“偵測(cè)”,拖出“鼠標(biāo)的x坐標(biāo)”積木,放入“將x坐標(biāo)設(shè)為-240”的“-240”處。

現(xiàn)在程序代碼區(qū)如圖1-11左側(cè)部分所示。

037-3

圖1-11 托球游戲程序中球板的腳本(左)和球的腳本(右)

第四步:編寫球的腳本

接下來我們編寫球的腳本,功能是:球一開始從正上方中心處落下,角度任意;每次移動(dòng)10步;如果碰到舞臺(tái)邊緣和球板就反彈,反彈角度也是任意的;如果碰到紫色地板,就結(jié)束游戲。

詳細(xì)的編寫步驟如下:

1)先點(diǎn)擊角色設(shè)置區(qū)中的球,開始編寫球的腳本。

2)點(diǎn)擊積木區(qū)中的“事件”,拖出“當(dāng)038-1被點(diǎn)擊”積木,放入程序代碼區(qū)。

3)點(diǎn)擊積木區(qū)中的“運(yùn)動(dòng)”,拖出“移到x: -240 y: 40”積木,放入程序代碼區(qū),并接在“當(dāng)038-2被點(diǎn)擊”積木下方;我們想讓球一開始處于上方中心處,因此把這個(gè)積木中的x改成0,y改成160。

4)點(diǎn)擊積木區(qū)中的“運(yùn)動(dòng)”,拖出“面向90方向”積木,接在“移到”積木的下面;點(diǎn)擊“運(yùn)算”,拖出“在1和10之間取隨機(jī)數(shù)”積木,放入“面向90方向”積木的“90”處;我們想讓球一開始落下時(shí),在120°到240°之間隨機(jī)選擇一個(gè)方向,因此把1改成120,把10改成240(見圖1-12)。

5)點(diǎn)擊積木區(qū)中的“控制”,拖出“重復(fù)執(zhí)行”積木,接在“面向”積木下面。

6)點(diǎn)擊積木區(qū)中的“運(yùn)動(dòng)”,拖出“移動(dòng)10步”積木,放入“重復(fù)執(zhí)行”積木里面。

7)點(diǎn)擊積木區(qū)中的“運(yùn)動(dòng)”,拖出“碰到邊緣就反彈”積木,接在“移動(dòng)10步”積木下面。

8)為了讓球碰到球板就反彈,我們這樣操作:

  • 首先點(diǎn)擊積木區(qū)中的“控制”,拖出“如果那么”積木,接在“碰到邊緣就反彈”積木下面。
  • 然后點(diǎn)擊積木區(qū)的“偵測(cè)”,拖出“碰到鼠標(biāo)指針”菱形積木,放入“如果 那么”的菱形空里,并點(diǎn)擊“鼠標(biāo)指針”旁的下拉框,選擇“Paddle”。
  • 最后點(diǎn)擊積木區(qū)中的“運(yùn)動(dòng)”,拖出“面向90方向”積木,接在“如果那么”積木里面;點(diǎn)擊“運(yùn)算”,拖出“在1和10之間取隨機(jī)數(shù)”積木,放入“面向90方向”積木的“90”處。
  • 當(dāng)我們想讓球碰到球板反彈時(shí),在-30°到30°之間隨機(jī)選擇一個(gè)方向,因此把1改成-30,把10改成30。

9)為了讓球碰到地板就結(jié)束,我們這樣操作:

  • 首先點(diǎn)擊積木區(qū)中的“控制”,拖出“如果那么”積木,接在上一個(gè)“如果 那么”積木下面。
  • 然后點(diǎn)擊積木區(qū)的“偵測(cè)”,拖出“碰到顏色039-1?”菱形積木,放入“如果 那么”的菱形空里,并點(diǎn)擊顏色,更改成紫色。
  • 最后點(diǎn)擊積木區(qū)的“控制”,拖出“停止全部腳本”積木,放入“如果那么”積木里面。

這樣,球的腳本就寫完了(見圖1-11右側(cè)部分)。我們的程序運(yùn)行起來是這樣的:一開始,球處于舞臺(tái)頂部中央,從120°到240°之間隨機(jī)一個(gè)方向下落;然后移動(dòng)鼠標(biāo),拖動(dòng)綠色球板去接球;球碰到球板或者邊界就反彈。這樣彈過來彈過去,非常有趣(見圖1-12)。你寫完了嗎?快點(diǎn)擊一下綠旗試試吧!

039-2

圖1-12 托球游戲

主站蜘蛛池模板: 华宁县| 南涧| 合江县| 淳安县| 江川县| 宜兴市| 漳浦县| 玉林市| 平山县| 横峰县| 互助| 若羌县| 通化市| 松原市| 合水县| 谷城县| 武强县| 大竹县| 美姑县| 长乐市| 龙游县| 邻水| 阿坝| 于都县| 潞城市| 平武县| 乌鲁木齐县| 什邡市| 江北区| 大安市| 弥渡县| 大理市| 平舆县| 勐海县| 吉安县| 贡山| 古田县| 隆尧县| 台江县| 漾濞| 明光市|