【蓝桥杯】第11届Scratch国赛中级组第6题 -- 3D打印小猫
[導讀]:藍橋杯大賽是工業和信息化部人才交流中心舉辦的全國性專業信息技術賽事。藍橋杯大賽首席專家倪光南院士說:“藍橋杯以考促學,塑造了領跑全國的人才培養選撥模式,并獲得了行業的深度認可。”
春雷課堂計劃推出Scratch藍橋杯真題解析100講,這是春雷老師解讀Scratch藍橋杯真題系列的第003講。
3D打印小貓
來源:第11屆藍橋杯Scratch國賽真題編程第6題,是中級組最后一題,初級組沒有此題。
代碼:若需要代碼可添加小助手微信索取。
1. 題目說明
背景信息:3D打印技術,它與普通打印工作原理基本相同,打印機內裝有液體或粉末等“打印材料”,與電腦連接后,通過電腦控制把“打印材料”一層層疊加起來,最終把計算機上的藍圖變成實物。
編程實現:通過滑桿控制小貓造型變化,按下空格鍵,傳感器進行掃描并在小貓右側打印它的造型。
具體要求:
(1)當小綠旗被點擊后,角色出現在舞臺對應位置;
(2)通過滑桿控制小貓形狀變化(外觀特效:魚眼,滑桿范圍:-100~100);
(3)按下空格鍵,小貓左側出現傳感從下到上對小貓進行全身掃描,同時在右側從下到上依次畫出掃描過的部分身體;
(4)當完成掃描后,右側程序完整造型效果;
(5)點擊綠旗,程序可重新開始。
2. 設計思路
(1)整體思路
我們可以將小貓從下到上分成若干層,每一層又由若干個點構成的。如果能確定小貓的層數,以及每一層中所要打印點的位置,那么我們就可以使用Scratch畫筆來繪制出黑色的小貓。
在對小貓進行逐層掃描的過程中,對點的大小把握顯得至關重要,點越小,效果越好,但需要掃描的次數也更多,一般來說,選擇1個像素(等于Scratch中的1步)是最合適的。所以繪制一個大小為1的小圓點作為“掃描點”角色,等待玩家按下空格鍵,將該角色移到小貓的左下方,從左到右,從下到上進行逐層掃描。此處注意小圓點要放置在中心點位置(角色的坐標即為該角色中心點的坐標)。
為了讓“Magic Wand”與題目所給圖形一致,也為了更好地跟隨“掃描點”移動,需要對“Magic Wand”的造型進行修改。此處注意,中心點位置為“Magic Wand”的頭部。
本題一共使用了4個角色,如下圖所示:
根據題目描述,我們可以繪制流程圖來整理思路,小貓的執行流程如下:
“掃描點”的執行流程如下:
“Magic Wand”的執行流程如下圖:
“Pencil”的執行流程如下圖:
(2)本題關鍵
- 如何讓“掃描點”進行由下到上,由左到右的逐層掃描?
 - 在“掃描點”逐層掃描的過程中,如何讓“Magic Wand”跟隨“掃描點”移動?
 - 在“掃描點”逐層掃描的過程中,如何讓“Pencil”繪制對應的打印點?
 
可以使用循環嵌套的方式來實現由下到上,由左到右的逐層掃描。首先讓“掃描點”移到小貓的左下方,外層循環控制由下到上越過小貓,內層循環控制由左到右越過小貓,這樣就完成了對小貓的掃描。
在“掃描點”逐層掃描的過程中不斷記錄“掃描點”的坐標,并通過廣播的方式通知“Magic Wand”來更新坐標位置,從而實現“Magic Wand”跟隨“掃描點”移動。
在“掃描點”逐層掃描的過程中偵測是否碰到小貓,若碰倒小貓,則通過廣播的方式通知“Pencil”進行描點,在“Pencil”接收到廣播后,X坐標增加一些步數,開始描點,從而實現在小貓的右側繪制對應的打印點。
3. 實現腳本
(a)小貓角色
主要是實現魚眼特效。
(b)掃描點角色
這里使用了兩層嵌套循環,外層的循環重復執行了152次,表示將小貓分152層進行逐行掃描,每一層掃描完畢,都回到左邊,并向上移動一層,進行下一層的掃描。
內層循環則是自左至右重復執行120次,每移動1步,都需要記錄下該點的x,y坐標,分別保存在變量x和y中,發送給Magic Wand。在掃描過程中,如果碰到小貓,就說明這個點是有效的打印點,發送給畫筆。
(c)Magic Wand角色
該角色的作用就是讓用戶看到掃描的過程,但真正完成掃描工作的是”掃描點“角色。
(d)Pencil角色
需要注意的是,這里的x坐標值為“打印點x + 120”,其作用是在小貓的右側120步處開始打印小貓,如果沒有右移的話,那么打印出來的小貓和原來的小貓會重疊,至于右移多少,可以自己設定,比如100步、150步都可以。
總結
以上是生活随笔為你收集整理的【蓝桥杯】第11届Scratch国赛中级组第6题 -- 3D打印小猫的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 如何理解和定义城市大脑
 - 下一篇: console js刷新页面_浏览器co