資訊內(nèi)容
Scratch: 敲磚塊 II
這是「天叔奇談」的第 037 篇文章,今天周三(2019/10/23),主題 scratch,題目是:敲磚塊。上期我們解決了彈性碰撞,這一期我們的目標(biāo)是搞清楚如何如何繪制磚塊和當(dāng)碰撞后,消掉磚塊。
課堂回顧
繪制磚塊有幾個方案,我和小寶在白板上討論了兩種。
第一種是小寶直接想到的 —— 每個磚塊是一個 sprite,這樣,三個磚塊就是三個 sprite,每個都要設(shè)置好 x,y,以及設(shè)置幾乎相同的代碼。我問她如果我們需要一個 5x10 的磚塊陣列呢?于是她否了這個提議。
本來我想引導(dǎo)她用背景圖片的方式,結(jié)果還沒引導(dǎo),她就自己說出來:那可不可以畫一幅圖,里面有 5x10 的磚塊陣列?我聽了還真是大吃一驚 —— 我自己都沒想到這個方法,還是參考了網(wǎng)上的方案才恍然大悟的。
我問她那如何判斷小球和磚塊碰撞呢?如果用 touching sprint,那就是碰撞整個圖片啊。她想了一下說,可以用 touching color ?。∥覐氐渍鄯?。touching color 我們上次就簡單了解和實(shí)驗(yàn)了一下,這次她就用上了。我又問碰撞之后,如何把小球所處位置的磚塊消除掉呢?這下她無解了 —— 要是她還能答上來,我都肯把 mbp 吃了!于是我抹一抹額頭的汗,故作高深地說,嗯,這就是我們要研究的內(nèi)容。
我跟她講了原理:比如磚塊是灰色,touching color gray 后,我們用一塊和背景顏色相同的黑色「磚塊」把原本的磚塊抹去,這樣就營造了磚塊被消除的效果。而小球自然下次經(jīng)過這個位置時就暢通無阻了。這需要用一個新的模塊:Pen。
小寶聽了很興奮,于是就開始在我的指導(dǎo)下編碼 —— 小球和「磚塊」(確切地說,是顏色)碰撞后,把兩個變量 ball-x,ball-y 設(shè)置為小球當(dāng)前的位置(我還沒教她 sprite A 如何獲取 sprite B 的位置),然后發(fā)一條消息 stamp。在黑色「磚塊」的代碼中,如果收到 stamp 的消息,就執(zhí)行 pen 的 stamp 的動作。
原理容易,一執(zhí)行就有問題。原因是小球的當(dāng)前位置并不適合直接放置黑色磚塊。即便是修正了坐標(biāo),還是不能很好地吻合:
這時整個課程已經(jīng)過去了 50 分鐘,我告訴小寶這是道數(shù)學(xué)題,我們需要找到一個合適的算法算出黑色磚塊的合適的 x 坐標(biāo),它只能是固定的幾個數(shù)字之一。我們算呀算,竟然沒有找到一個合適的公式。十分鐘后,看著小寶哈欠連連,我認(rèn)栽了,我一堂堂程序員教一個小屁孩,有史以來第一次,出了洋相。我只好告訴小寶先去睡覺吧(連日記我都不好意思「逼」她寫),我們下堂課再處理這個問題。
聲明:本文章由網(wǎng)友投稿作為教育分享用途,如有侵權(quán)原作者可通過郵件及時和我們聯(lián)系刪除

- 上一篇
Scratch偵測全鍵盤
在Scratch 3.0的偵測模塊中,好像只能偵測上下左右方向鍵,字母鍵,數(shù)字鍵,空格鍵。但是有些喜歡折騰的小伙伴,比如我,小阿斌,還有我的一群朋友們,覺得如果可以讓Scratch偵測全鍵盤那應(yīng)該是挺帥的事情。 于是開始搗鼓了,竟然實(shí)現(xiàn)了Scratch偵測全鍵盤
- 下一篇
少兒編程scratch:第三篇
在學(xué)習(xí)了循環(huán)嵌套和條件判斷的基礎(chǔ)上,今天繪制一個在大海中航行的小船。 故事大概: 在大海的深海區(qū)1和淺海區(qū)2以及被海洋包圍的環(huán)島3中,有一只航行的小船。當(dāng)行駛在深海中的時候,小船可以快速前行,當(dāng)進(jìn)入淺海中的時候,小船要慢慢航行,當(dāng)進(jìn)入到環(huán)島上的