Scratch軟件編程基礎(chǔ)課第二講:俠盜飛車
小伙伴們有看過賽車比賽嗎竣灌?幾輛賽車從起點(diǎn)出發(fā),你追我趕洞渔,比賽誰會最先到達(dá)終點(diǎn)漂羊,賽車在賽道上飛馳還有轉(zhuǎn)彎漂移的時候是不是特別緊張刺激。我有一個好朋友彩顏兒侣背,他最近就特別喜歡看賽車比賽白华,而且他還想自己體驗(yàn)一下在賽道上飛馳的感覺,但是彩顏兒年紀(jì)太小了贩耐,和大家一樣小弧腥,還不能開車,并且潮太,他雖然很喜歡賽車管搪,但是覺得賽車有點(diǎn)危險。所以他就想了一個辦法铡买,他知道我會制作游戲更鲁,就讓我?guī)退谱饕粋€賽車游戲,他想通過這個游戲體驗(yàn)一下開賽車的感覺寻狂。我給彩顏兒制作了一個賽車的游戲岁经,彩顏兒玩過之后感覺非常棒,所以我想把這個游戲和小伙伴們也分享一下蛇券,那我們這節(jié)課就一起來制作一個俠盜飛車的賽車游戲缀壤。
[圖片上傳失敗...(image-dcb3c2-1635476481225)]
下面我們先來看一下這個游戲的效果是什么樣的,分析一下纠亚,我們應(yīng)該怎么做能夠完成這個游戲塘慕。
【問題】在剛剛的效果視頻中,黑色賽車是在哪個方向上移動的蒂胞?
【問題】黑色賽車在碰到錢幣時图呢,左上角的數(shù)字有什么變化嗎?
【總結(jié)】黑色賽車會在左右方向移動骗随,在碰到錢幣時左上角的金錢數(shù)會增加100.【講解】那這節(jié)課呢我們就通過兩個任務(wù)來完成這個賽車游戲蛤织,任務(wù)一:實(shí)現(xiàn)方向鍵控制賽車左右移動;任務(wù)二:記錄賽車吃到的金錢數(shù)鸿染。
首先小伙伴們先上傳俠盜飛車初始程序指蚜,在初始程序中已經(jīng)給出了一部分游戲功能,我們只需要實(shí)現(xiàn)剛剛分析的任務(wù)一和任務(wù)二的功能就可以了涨椒。首先我們來完成任務(wù)一摊鸡,實(shí)現(xiàn)用方向鍵控制黑色賽車左右移動绽媒,也就是說我們要在黑色賽車這個角色上拼接Scratch積木腳本了。
【問題】為黑色賽車拼接Scratch積木應(yīng)該在角色區(qū)先選中哪個角色免猾?
【講解】應(yīng)該在角色區(qū)先選中黑色賽車是辕。
在實(shí)際的賽車比賽中,所有的賽車都要從起點(diǎn)出發(fā)猎提,那在這個賽車游戲中获三,我們也要為賽車設(shè)置一個初始位置。
【講解】也就是說忧侧,當(dāng)小綠旗被點(diǎn)擊后石窑,黑色賽車要移到初始位置。首先要找到事件分類中的“當(dāng)小綠旗被點(diǎn)擊后”Scratch積木蚓炬,在我們點(diǎn)擊舞臺區(qū)上方的小綠旗后松逊,就會從上到下執(zhí)行這塊Scratch積木下面的Scratch積木腳本,移到初始位置的Scratch積木是運(yùn)動分類中的“移到x()y()”肯夏,它可以移動角色在舞臺區(qū)的位置经宏。找到這兩塊Scratch積木之后我們發(fā)現(xiàn),在“移到x()y()”Scratch積木中需要填入數(shù)字驯击,那如何確定這塊Scratch積木中填入的數(shù)值呢烁兰?在角色區(qū)我們可以看到也有x和y這兩個字母。這兩個字母呢就是表示角色的位置的徊都。小伙伴們可以嘗試在舞臺區(qū)用鼠標(biāo)拖動黑色賽車這個角色沪斟,看一下角色區(qū)x、y后面的數(shù)字會不會變化暇矫。黑色賽車的起點(diǎn)已經(jīng)設(shè)置好了,下面我們就可以實(shí)現(xiàn)用鍵盤上的方向鍵控制賽車左右移動了房轿,首先咱們來拼接用向右的方向鍵控制賽車向右移動的Scratch積木粤攒。[圖片上傳失敗...(image-48c77d-1635476481225)]
【講解】用方向鍵控制賽車向右移動,也就是說“如果按下向右的方向鍵囱持,那么向右移動”夯接,我們轉(zhuǎn)化成這句話后,就可以在Scratch積木區(qū)找到相對應(yīng)的Scratch積木纷妆,首先是控制分類中的“如果…那么…”Scratch積木钻蹬,然后是“按下→鍵”這個需要先找到偵測分類中的“按下空格鍵”然后把空格修改成→,最后是向右移動凭需,在Scratch積木區(qū)找不到向右移動這個Scratch積木问欠,那怎么辦呢?這里我們用到的是運(yùn)動分類里的“將x坐標(biāo)增加()”Scratch積木粒蜈,使用這個Scratch積木就可以讓角色向右移動顺献。(程序樣例見“第五部分 – 程序1-2”)在“如果按下→鍵饶套,那么向右移動”這句話中瓦阐,咱們能找到直接對應(yīng)的“如果…那么…”和“按下→鍵”Scratch積木挂绰,最后的向右移動使用的是“將x坐標(biāo)增加()”那為什么將x坐標(biāo)增加就是向右移動呢父丰?在這里我們就要了解一個新知識——坐標(biāo)翁潘。[圖片上傳失敗...(image-6c09a-1635476481225)]
【講解】在這張圖片中费韭,黃色的荡碾,左右方向的這條線名字叫x軸恃逻,那x軸上的數(shù)字就叫做x坐標(biāo)蕊程,也就是說x坐標(biāo)表示角色左右方向的位置椒袍;綠色的,上下方向的這條線名字叫y軸藻茂,y軸上的數(shù)字叫y坐標(biāo)驹暑,y坐標(biāo)表示角色在上下方向的位置。(坐標(biāo)圖見“第六部分 – 附錄一”)【講解】從左到右x坐標(biāo)是由小變大的掀序,也就是說帆焕,角色向右移動時,x坐標(biāo)是增加的不恭。所以使用“將x坐標(biāo)增加()”Scratch積木可以讓角色向右移動叶雹。
【問題】角色向上移動的時候,y坐標(biāo)是增加的還是減小的呢县袱?
【講解】角色向上移動時浑娜,y坐標(biāo)是增加的,所以使用“將y坐標(biāo)增加()”Scratch積木可以讓角色向上移動式散。
【問題】角色向左移動時筋遭,哪個坐標(biāo)會變化,會如何變化暴拄?
【講解】角色向左移動時漓滔,x坐標(biāo)會減小,但是我們在運(yùn)動分類中找不到“將x坐標(biāo)減少()”Scratch積木乖篷,那怎么辦呢响驴?這個時候我們可以使用“將x坐標(biāo)增加()”Scratch積木,然后在填入的數(shù)值前面添加一個減號撕蔼,這樣豁鲤,角色就會向相反的方向移動秽誊,也就是向左移動了。
剛剛我們已經(jīng)拼接了如何使用→鍵控制角色向右移動的Scratch積木琳骡,還講了如果角色向左移動锅论,應(yīng)該使用“將x坐標(biāo)增加()”Scratch積木,并且在數(shù)字前面要添加減號楣号,下面小伙伴們能不能自己嘗試完成“如果按下←鍵最易,角色向左移動”的Scratch積木拼接呢?
【講解】需要找出一組新的“如果…那么…”炫狱、“按下()鍵”和“將x坐標(biāo)增加()”Scratch積木藻懒,修改它們的參數(shù)之后,把它們拼接起來视译,拼在剛剛那組Scratch積木的下方嬉荆。(程序樣例見“第五部分 – 程序1-3”)
小伙伴們點(diǎn)擊小綠旗運(yùn)行看看,按下方向鍵時可以左右移動了嗎憎亚?我們剛剛拼接了這一組Scratch積木员寇,但是按下方向鍵時角色并沒有移動,這是為什么呢第美?
【講解】在上節(jié)課中我們說過蝶锋,Scratch積木是從上到下順序執(zhí)行的,并且這些Scratch積木只會執(zhí)行一次什往,在小綠旗被點(diǎn)擊之后扳缕,黑色賽車就會移到起始位置,之后依次判斷一次向右别威、向左的方向鍵有沒有被按下躯舔,這組Scratch積木就不再執(zhí)行了。同時Scratch積木執(zhí)行的速度也是非呈」牛快的粥庄,我們還沒反應(yīng)過來就執(zhí)行結(jié)束了。所以賽車并沒有移動豺妓。如果我們想用方向鍵控制賽車的話惜互,就需要讓這兩組“如果…那么..”Scratch積木一直不停地執(zhí)行琳拭,也就是一直判斷方向鍵有沒有被按下训堆。
使用哪塊Scratch積木可以讓腳本不停地執(zhí)行呢?[圖片上傳失敗...(image-c9ceb1-1635476481225)]
【講解】這塊Scratch積木就是控制分類中的“重復(fù)執(zhí)行”坑鱼,從這個Scratch積木的名字就可以看出來,這個Scratch積木會讓放在它里面的Scratch積木一直不停地循環(huán)執(zhí)行下去絮缅,執(zhí)行完第一次之后鲁沥,就會再從上到下執(zhí)行下一次『艄桑現(xiàn)在阐枣,“如果…那么…”這兩組Scratch積木需要不停地執(zhí)行,所以要把“重復(fù)執(zhí)行”放在這兩組Scratch積木的外面。(老師操作演示馆匿,等待學(xué)生拼接)(程序樣例見“第五部分 – 程序1-4”)剛剛我們?yōu)楹谏愜嚻唇恿艘唤MScratch積木渐北,是一塊一塊的拼接完成的,下面我們一起來梳理一下呕臂,剛剛那組Scratch積木整體的效果瘟芝。
【問題】小伙伴們能說一下我們剛剛拼接的那組Scratch積木腳本實(shí)現(xiàn)了什么樣的效果嗎敌呈?
【總結(jié)】游戲開始后,賽車先移到初始位置签赃,之后用左右方向鍵可以控制賽車左右移動。
【問題】是如何實(shí)現(xiàn)移到初始位置和方向鍵控制移動的效果的箩绍?
【總結(jié)】先移到x()y()芽淡,然后持續(xù)判斷左右方向鍵有沒有被按下己单。
【問題】設(shè)置角色初始位置的Scratch積木是什么?
【總結(jié)】“移到x()y()”
【問題】在按下方向鍵時角色才會移動耙饰,把“按下()鍵”和“將x坐標(biāo)增加()”Scratch積木連接在一起的Scratch積木是什么纹笼?
【總結(jié)】“如果…那么…”
【問題】實(shí)現(xiàn)角色左右移動的Scratch積木是什么?
【總結(jié)】“將x坐標(biāo)增加()”
【問題】能夠讓腳本不停地執(zhí)行的Scratch積木是什么苟跪?
【總結(jié)】“重復(fù)執(zhí)行”
剛剛的任務(wù)一小伙伴們完成的非常棒廷痘,在這里老師給小伙伴們布置了一個小挑戰(zhàn),看看小伙伴們能不能完成件已。【講解】賽車收集到的錢幣的數(shù)量是變化的數(shù)值惰聂,我們可以使用變量來存儲疆偿。變量可以存儲不斷變化的數(shù)值,比如像游戲的得分或者生命值[圖片上傳失敗...(image-af243e-1635476481225)]
等搓幌。首先需要進(jìn)入變量分類杆故,之后點(diǎn)擊新建一個變量,并把它命名為“金錢數(shù)”溉愁。(等待學(xué)生建立)
【問題】我們剛剛建立的變量“金錢數(shù)”什么時候會發(fā)生變化处铛?
【講解】在黑色賽車和錢幣碰到的時候,金錢數(shù)會增加拐揭,在黑色賽車角色中沒有能夠偵測碰到錢幣的Scratch積木撤蟆,那我們需要點(diǎn)擊角色區(qū)的錢幣,去錢幣角色的腳本區(qū)找一下堂污。在錢幣角色的腳本區(qū)有能夠偵測碰到黑色賽車的Scratch積木家肯,所以我們把實(shí)現(xiàn)變量增加的Scratch積木拼接在這個角色上。能夠使變量增加的Scratch積木是“將(金錢數(shù))增加()”Scratch積木盟猖,應(yīng)該把這個Scratch積木放在“如果碰到黑色賽車那么…”的里面讨衣。(程序樣例見“第五部分 – 程序2-1”)試玩一下游戲看看,在第二次或之后運(yùn)行游戲的時候式镐,金錢數(shù)是從0開始增加嗎反镇?[圖片上傳失敗...(image-a0161f-1635476481225)]
【講解】在第二次運(yùn)行游戲時,金錢數(shù)是在上一次停止時的數(shù)字開始增加的娘汞,為了能夠正確地記錄金錢數(shù)歹茶,我們需要為金錢數(shù)設(shè)置一個為0的初始值,也就是說要實(shí)現(xiàn)每次運(yùn)行游戲時,金錢數(shù)都要初始化為0辆亏。為變量設(shè)置初始值的Scratch積木是“將(金錢數(shù))設(shè)為()”风秤,應(yīng)該把這個Scratch積木拼在錢幣角色中,包含“當(dāng)小綠旗被點(diǎn)擊”Scratch積木的這組Scratch積木下方扮叨。(程序樣例見“第五部分 – 程序2-2)
剛剛我們完成了任務(wù)二缤弦,下面我們來梳理一下任務(wù)二中的腳本邏輯。[圖片上傳失敗...(image-31cf68-1635476481225)]
【問題】任務(wù)二實(shí)現(xiàn)了什么樣的功能效果
【總結(jié)】變量“金錢數(shù)”記錄了賽車收集到的錢幣數(shù)量彻磁。
【問題】在哪個角色上添加了腳本碍沐,如何實(shí)現(xiàn)金錢數(shù)從0增加?
【總結(jié)】在錢幣角色上添加了腳本衷蜓,為金錢數(shù)設(shè)置了一個為0的初始值累提,在錢幣碰到黑色賽車時金錢數(shù)增加。
【問題】設(shè)置變量初始值的腳本是什么磁浇?
【總結(jié)】“將()設(shè)為()”斋陪。
【問題】將變量的值增加或減少的Scratch積木是什么?
【總結(jié)】“將()增加()”置吓。
剛剛我們學(xué)習(xí)了變量的知識无虚,老師給你們布置了一個變量相關(guān)的小挑戰(zhàn),我們比一下誰能完成得更好衍锚。
【講解】黑色賽車在賽道上行駛時得分增加友题,也就是說黑色賽車碰到角色賽道1或賽道2時得分就會增加,首先需要把初始得分設(shè)為0戴质,之后檢測判斷有沒有碰到賽道1或賽道2度宦,碰到時得分增加1。(程序樣例見“第五部分 – 程序2小挑戰(zhàn)”)