打砖块游戏-第12届蓝桥杯Scratch省赛1真题第5题
[導(dǎo)讀]:超平老師計(jì)劃推出Scratch藍(lán)橋杯真題解析100講,這是超平老師解讀Scratch藍(lán)橋真題系列的第51講。
第12屆藍(lán)橋杯青少年組省賽分兩次進(jìn)行,這是2020年10月19日舉行的第一次省賽考試初級組,形式為在線考試。Scratch分為初級組和中級組,其中初級組面向7~10歲孩子,中級組面向11~14歲孩子。
打磚塊游戲,本題是第12屆藍(lán)橋杯Scratch第一次省賽真題初級組編程第5題,這是最后一題。題目要求考生編程創(chuàng)作一個(gè)打磚塊游戲,磚塊的初始生命值為1 - 5,磚塊被打擊一次,生命值減1,生命值為0的時(shí)磚塊消失。
先來看看題目的要求吧。
一.題目說明
編程實(shí)現(xiàn):
打磚塊游戲,磚塊的初始生命值為:1 – 5,磚塊被打擊一次,生命值減1,生命值為0的時(shí)磚塊消失。
具體要求:
1).?點(diǎn)擊綠旗舞臺呈現(xiàn)效果(27個(gè)磚塊如圖分布,且磚塊造型隨機(jī)顯示);
2).?小貓能不停地發(fā)射小球(間隔0.1秒),小球面向鼠標(biāo)指針的方向發(fā)射,且小球碰到邊緣反彈;
3).?小球打到磚塊時(shí)小球消失,同時(shí)磚塊的生命值減1,呈現(xiàn)與生命值對應(yīng)的造型;
4). 磚塊的生命值為0時(shí),消失;
5). 所有磚塊消失,游戲結(jié)束。
評判標(biāo)準(zhǔn):
-
20分:滿足要求1);
-
20分:滿足要求2);
-
20分:滿足要求3);
-
20分:滿足要求4);
-
20分:滿足要求5)。
二.思路分析
本作品一共有3個(gè)角色,分別是小貓、小球和磚塊,如圖所示:
其中小貓角色只需要顯示在舞臺左下角即可。不停地發(fā)射小球,意味著舞臺上會出現(xiàn)大量的小球,所以需要使用克隆,然后控制克隆體的運(yùn)動(dòng)即可。
本題的重點(diǎn)是磚塊角色,首先需要在舞臺上方克隆出27個(gè)磚塊,分3排擺放,這可以使用嵌套循環(huán)來實(shí)現(xiàn)。其次,每個(gè)克隆體磚塊都有不同的生命值,并顯示不同的造型,這需要使用私有變量。
?
三.編程實(shí)現(xiàn)
根據(jù)題目描述及思路分析,我們可以按角色逐個(gè)編寫程序:
-
小貓角色
-
小球角色
-
磚塊角色
1). 小貓角色
小貓角色最簡單,只需要設(shè)置好位置即可,代碼如圖所示:
2). 小球角色
小球是從小貓的手上發(fā)射出去的,需要先設(shè)置好小球角色的位置,然后每隔0.1秒克隆一個(gè)小球,代碼如下:
由于小球本體是不需要參與發(fā)射的,因此將本體隱藏起來。接下來就需要控制克隆體了,克隆體沿著鼠標(biāo)的方向移動(dòng),如果碰到舞臺邊緣就反彈,如果碰到磚塊則刪除克隆體,代碼也比較簡單,如下:
當(dāng)開關(guān)打開時(shí),需要注意的是,“面向鼠標(biāo)指針”指令,要放在循環(huán)外面,如果放在循環(huán)里面,則小球時(shí)刻面向鼠標(biāo)移動(dòng),這不是我們要的效果。
2). 磚塊角色
根據(jù)前面的分析,每個(gè)磚塊克隆體都有自己的生命值,需要使用私有變量,創(chuàng)建私有變量“_生命值”如圖所示:
必須要勾選“僅適用于當(dāng)前角色”選項(xiàng),變量名前面加了一個(gè)下劃線,這是一個(gè)良好的編程習(xí)慣,讓自己和別人一看到這個(gè)變量,就知道是私有變量。
同時(shí)還需要?jiǎng)?chuàng)建一個(gè)變量用來表示磚塊的數(shù)量,其初始值為27。接下來,我們就可以克隆磚塊了,先上代碼:
這里使用了嵌套循環(huán),其中內(nèi)層循環(huán)用于克隆每一排的9個(gè)磚塊,由于它們都是從左到右排列,所以,每次克隆之前,需要將x設(shè)置為-200,然后循環(huán)9次,每克隆1個(gè),將x坐標(biāo)增加50,向右移動(dòng)一點(diǎn)。外層循環(huán)則表示要克隆3排,因此每克隆完一排,就將y坐標(biāo)增加-40,向下移動(dòng)一點(diǎn)。
在克隆磚塊之前,每次都需要設(shè)置私有變量”_生命值“的值,基于克隆體的特性,每個(gè)克隆體就擁有自己的生命值,并且互不相干。
有了克隆體磚塊,就可以根據(jù)自己的生命值來顯示不同的造型了,磚塊角色有5個(gè)造型,如圖:
接下來就需要檢測是否碰到小球了,如果碰到小球,則將生命值減1,如果生命值減到0,則需要?jiǎng)h除當(dāng)前克隆體,并將磚塊數(shù)量減1。同時(shí)還需要判斷磚塊數(shù)量是否減到0,如果為0,則停止全部腳本,編寫代碼如下:
在刪除克隆體之前,增加了一個(gè)”等待0.01秒“指令,其作用是確保在刪除自己之前,讓小球角色能夠檢測是否碰到磚塊。如果沒有等待0.01秒,一旦磚塊角色的刪除此克隆體代碼比小球角色檢測碰撞代碼先執(zhí)行,那么小球就不會消失,從而出現(xiàn)小bug,這就是Scratch中經(jīng)典的雙克隆體碰撞問題。
需要注意的是, 這里的如果...那么指令嵌套了3層,你也可以不使用嵌套的寫法,但是這是判斷次數(shù)最少的寫法,也是最效率最高的寫法。
四.總結(jié)與思考
本題中等難度,難度系數(shù)為4,積木塊數(shù)量在47個(gè)左右,分值為100,涉及到的知識點(diǎn)主要包括:
-
Scratch克隆,包括克隆自己、當(dāng)作為克隆體啟動(dòng)時(shí)和刪除此克隆體3大指令;
-
克隆技巧,使用雙重循環(huán)克隆多行角色;
-
私有變量,通常和克隆體結(jié)合使用;
-
雙克隆體碰撞問題的特點(diǎn)及解決方案;
-
循環(huán)和條件的多層嵌套。?
很顯然,本題的考察重點(diǎn)是Scratch克隆,不管題目怎么變,始終記住一點(diǎn),克隆體在克隆的那一刻,和本體的特征一模一樣,包括造型、大小、坐標(biāo)、變量的值等。正所謂,萬變不離其宗,只要記住這一原則,如何控制每個(gè)克隆體的位置,如何為克隆體設(shè)置私有變量,都變得很簡單。
如果你覺得文章對你有所幫助,別忘了點(diǎn)贊,你的鼓勵(lì)是我堅(jiān)持繼續(xù)寫下去的最大動(dòng)力,Thanks?(・ω・)ノ。
?
總結(jié)
以上是生活随笔為你收集整理的打砖块游戏-第12届蓝桥杯Scratch省赛1真题第5题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qaq半中文编程
- 下一篇: Cocoa-专业术语