小猴吃苹果-第12届蓝桥杯Scratch选拔赛真题精选
[導讀]:超平老師計劃推出Scratch藍橋杯真題解析100講,這是超平老師解讀Scratch藍橋真題系列的第90講。
藍橋杯選拔賽每一屆都要舉行4~5次,和省賽、國賽相比,題目要簡單不少,再加上篇幅有限,因此我精挑細選了一部分題目進行解讀。
第12屆藍橋杯青少年組第2次選拔賽于2020年9月20日舉行,形式為線上考試。Scratch分為初級組和中級組,其中初級組面向7~10歲孩子,中級組面向11~14歲孩子。
小猴吃蘋果,本題是2020年9月20日舉行的第12屆藍橋杯Scratch選拔賽真題編程第3題,初級組和中級組都有此題,題目要求編程實現小猴搭梯子吃蘋果的有趣場景。
先來看看題目的要求吧。
一.題目說明
編程實現:
猴子想吃蘋果但是蘋果樹太高了,它只好自己搭建梯子,來吃到蘋果。
具體要求:
1). 當綠旗被點擊后,顯示Blue Sky背景、猴子和蘋果角色(大小都為50),出現在如圖位置(大致位置即可);
2). 鼠標點擊猴子之后,猴子能搭建出如圖的梯子(使用畫筆)。圖中小正方形邊長為50;
3). 每按下一次空格鍵,猴子就可以爬一格梯子,猴子默認已經站在第一格;
4). 當猴子爬到上面碰到蘋果時,蘋果和猴子同時用2秒鐘時間慢慢回到地面上,程序結束;
5). 重新點擊綠旗,程序可以重復執行。
評判標準:
-
2分:角色、背景符合要求;
-
6分:正確畫出符合要求的梯子;
-
6分:猴子可以按照題目要求爬梯子;
-
6分:猴子拿到蘋果后可以按照要求回到地面;
-
10分:程序可以重復執行,且完全符合要求。
二.思路分析
本題包含4個角色,分別是Tree,Monkey、Apple和Pencil,如圖所示:
圖中的梯子是通過畫筆繪制出來的,所以,這是一個典型的運動和畫筆相結合的作品。
從功能上看,本題并不復雜,點擊猴子,使用畫筆角色繪制出梯子,有了梯子之后,按下空格鍵,猴子就開始往上爬,每次爬一個格子。碰到蘋果后,猴子和蘋果一起返回地面。
這里的重點是如何銜接各個角色,很顯然,這需要使用事件廣播機制。除此之外,還需要進一步考慮各個事件的先后順序,試想一下,每點擊一次猴子,就繪制一個梯子,是否有這個必要?如果梯子還沒搭好,按下空格鍵猴子就開始向上爬了,這樣是否合理?
對于本題,我會先按照常規方式實現所有功能,以滿足題目的要求,然后再進行優化,確保作品更完整,更合理。?
三.編程實現
根據題目描述和思路分析,我們可以分四步來編寫程序:
-
初始化設置
-
繪制梯子
-
猴子爬梯子吃到蘋果
-
作品優化
1. 初始化設置
這里的4個角色都需要進行初始化設置,對于Tree1角色,只需要固定好其位置即可,代碼如下:
monkey也需要設置好位置,代碼如下:
Apple角色的初始化代碼如下:
對于Pencil角色而言,需要隱藏起來,同時需要清空舞臺,對應的編寫代碼如下:
由于Pencil角色自始至終都是不用顯示的,因此也就不需要設置其位置了。
2. 繪制梯子
鼠標點擊猴子,就要開始繪制梯子了,需要注意的是繪制需要移動角色,最好不要直接使用猴子來繪制梯子,而是借助Pencil角色來實現,我們可以通過事件廣播機制來實現角色之間的通信。
在Monkey角色中,編寫代碼如下:
相應的,Pencil角色在接收到廣播消息后,就開始繪制梯子了,其實就是自下而上繪制6個正方形,切換到Pencil角色,編寫代碼如下:
代碼比較簡單,畫一個正方形需要循環4次,然后再重復6次,就可以繪制好梯子了,但是要注意,一個正方形畫好之后,需要向上移動50步。
3. 猴子爬梯子吃到蘋果
畫好梯子之后,當按下空格鍵時,猴子向上爬一格,當猴子碰到蘋果時,猴子又慢慢回到地面,在Monkey角色中編寫代碼如下:
由于蘋果要和猴子一起回到地面,所以碰到蘋果時,發送了一個”回來“的廣播消息。相應的蘋果角色在接收到廣播消息后,也慢慢滑行到舞臺底部,切換到Apple角色,增加如下代碼:
注意,猴子和蘋果角色滑行的時間相同,這樣可以保證兩者是同步,但是位置并不相同,在創作時,需要多測試幾次,找到合適的坐標值,確保二者的相對位置不變,滑行結束,就停止全部腳本,結束程序。
至此,所有的效果都已經實現了,你可以測試一下效果如何。
4. 作品優化
上面的代碼,基本上是能夠滿足題目要求的,但是有些不合理的地方,比如反復點擊猴子,畫筆會一遍又一遍地繪制梯子,只不過它們重疊在一起,看起來不明顯。
再比如,在沒有畫好梯子之前,直接按下空格鍵,猴子也會煞有介事的往上爬,這就有些不合理了,這個該怎么解決優化呢?
其實也不難,首先去掉”當角色被點擊“指令,使用”碰到鼠標指令“和”按下鼠標“組合指令來判斷是否按下鼠標,同時這里只需要判斷一次,最簡單的辦法是使用”等待條件“指令。
當鼠標點擊猴子后,發送”畫梯子“廣播消息,不同的是這一次我們使用”廣播并等待“指令,在梯子畫完之后再繼續執行后續代碼。
接下來繼續判斷是否按下空格鍵,同樣的,去掉”當按下空格鍵“指令,使用”等待條件“和偵測模塊中的“按下空格鍵”來判斷是否按下空格鍵,對應的代碼如下:
需要注意的是,使用等待條件判斷是否按下空格鍵時,需要在尾部使用“等待按下空格鍵不成立”指令,以確保按下并松開鼠標是一次按鍵操作,這是一個非常經典的代碼結構,你可以收藏起來。
經過優化之后,作品就非常合理,非常嚴謹了。
四.總結與思考
本題難度系數為2,積木塊數量40個左右?,涉及到的知識點主要包括:
-
設置角色位置,關鍵是要養成初始化角色位置的習慣;
-
事件廣播機制,重點是廣播事件并等待指令的使用及特點;
-
畫筆的使用,使用畫筆結合移動繪制梯子;
-
點擊角色的兩種實現方式;
-
按下某個鍵的兩種實現方式。
本題相對比較簡單,重點是如何對作品進行優化,讓作品更完整,更符合邏輯。我們在創作任何作品時,都需要考慮作品的完整性、邏輯性,力爭給玩家最好的用戶體驗,這是一個不斷迭代,不斷創新的過程,你會從中受益良多。
如果你覺得文章對你有所幫助,別忘了點贊,你的鼓勵是我堅持繼續寫下去的最大動力,Thanks?(・ω・)ノ。
需要素材和源碼的,可以聯系本人,或者移步至同名wx號。
總結
以上是生活随笔為你收集整理的小猴吃苹果-第12届蓝桥杯Scratch选拔赛真题精选的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信二维码生成
- 下一篇: 前端工程师的摸鱼日常(12)