您現(xiàn)在的位置是:首頁 » scratch編程資訊
資訊內(nèi)容
Scratch第三十九講:俄羅斯方塊
極客小將2020-11-26-
想了解編程技巧,就請點(diǎn)擊上面藍(lán)字:跟我學(xué)Scratch編程,關(guān)注CC哥
?
這個(gè)俄羅斯方塊本來CC哥想自己做,后來看到網(wǎng)上有一個(gè)朋友找了個(gè)例子但是看不懂,那CC哥也先不費(fèi)功夫了,就把這個(gè)例子拿出來給大家講解一遍。說真心話,看別人的例子比自己寫還累。
想了解編程技巧,就請點(diǎn)擊上面藍(lán)字:跟我學(xué)Scratch編程,關(guān)注CC哥
?
這個(gè)俄羅斯方塊本來CC哥想自己做,后來看到網(wǎng)上有一個(gè)朋友找了個(gè)例子但是看不懂,那CC哥也先不費(fèi)功夫了,就把這個(gè)例子拿出來給大家講解一遍。說真心話,看別人的例子比自己寫還累。
俄羅斯方塊
這個(gè)例子還是挺復(fù)雜的,初學(xué)者確實(shí)很難看懂,CC哥也花了些時(shí)間來。這個(gè)程序的網(wǎng)址如下,大家有興趣可以自己上去下載。https://scratch.mit.edu/projects/2725010/editor
閱讀別人的程序也有很多好處:1:學(xué)習(xí)別人的編程技巧,即使是scratch,但也是一門編程語言,一樣有很多技巧,所以多看別人的程序,會學(xué)到很多技巧。而且可以學(xué)到一些很多教程上沒有的方法。2:學(xué)習(xí)別人的編程思路,一個(gè)人做程序久了,就會形成自己的固定思路,碰到一個(gè)問題就會用自己最熟悉的思路去編程。多看看別人的程序,就會看到很多新的思路,開闊自己的思維。就跟你做奧數(shù)題一樣啦,不光自己做,還要看看別人的解題方法。
我們觀察一下這個(gè)程序的特點(diǎn),也就是比較獨(dú)特的部分:1:首選我們看這個(gè)程序里有哪些角色,前面7個(gè)就是7個(gè)方塊了,不好理解的是detecter這個(gè)角色。剩下的角色都好理解。我們一會再去單獨(dú)談detecter這個(gè)角色。

2:就是這個(gè)方格背景了,所有的方塊都要嚴(yán)格的在這個(gè)方格背景里移動,這個(gè)看著簡單,大家學(xué)scratch這么久了,應(yīng)該知道還是有點(diǎn)難度的,如何做到,我們一會討論。



5:就是當(dāng)方塊把某一層全部鋪滿的的時(shí)候,程序怎么能檢測到呢?通過什么來檢測呢?這是一個(gè)難點(diǎn),說句實(shí)話,CC哥想了多方案,發(fā)現(xiàn)最后都沒有設(shè)計(jì)者的構(gòu)思的簡單方便。


這是CC哥在分析這個(gè)程序時(shí)所發(fā)現(xiàn)的一些技術(shù)點(diǎn),如果我們能自己想出解決的辦法,或者能看懂編程者的方法,那么我們自己也就可以寫這個(gè)程序了。另外一些技術(shù)點(diǎn)就比較容易理解,CC哥就不花篇幅講了,比如玩這個(gè)俄羅斯方塊,大家都知道角色可以選擇,可以有四個(gè)方向,是不是大家第一的反應(yīng)就是用角色旋轉(zhuǎn)來做?而編程者就不是用旋轉(zhuǎn)來做的,而是用造型來處理的。是不是很巧妙?所以當(dāng)按旋轉(zhuǎn)按鈕的時(shí)候,程序只要選造型就好了。

程序解析
我們先從簡單的問題出發(fā),第二個(gè)問題,編程者怎么控制這些角色沿著方格來運(yùn)動的。而且在移動過程中如何檢測碰到其他方塊?


本來這個(gè)木棍方塊應(yīng)該在往下走一格的,但是肯定是碰到了下面黃色方塊或橙色的T字方塊的邊上,導(dǎo)致沒有落下來。這就是編程者沒有精準(zhǔn)的處理好角色的尺寸。這樣的問題在消除的時(shí)候也會出現(xiàn)。

然后我們看一下這幾個(gè)方塊角色的程序,基本上都一樣,CC哥只簡單講這個(gè)T方塊就好了:

1:當(dāng)接收到T的消息,也就是說出來一個(gè)T方塊,那么就往下落好了,程序不復(fù)雜,在沒有碰到黑色以前(不論是其他角色和邊框)一直下落,每次一格。2:如果碰到了,就回退一步,這樣可以停留在被碰物體的上方。3:重點(diǎn)來了,當(dāng)停穩(wěn)后,圖章! 圖章命令大家學(xué)過了,就是在原地畫一個(gè)該角色。這就回答了剛才第四個(gè)問題,編程者是通過圖章命令來讓角色停留在原地的。并不是通過克隆。

這個(gè)是用上箭頭來進(jìn)行方塊的旋轉(zhuǎn),就是每按一次切換一個(gè)造型,其中在切換時(shí)一定要檢測一下是否碰到其他角色或邊框,如果碰到,就不做旋轉(zhuǎn)。

這段程序是在程序開始界面里顯示一下方塊。


這段程序是在方格的右上角提醒下一個(gè)要出現(xiàn)的方塊的樣子。


關(guān)于檢測和消除這部分是程序里難度最大的部分,CC哥下一課再跟大家講。
總結(jié)
在scratch的官網(wǎng)上有很多非常復(fù)雜的程序,來自世界各地Scratch的愛好者,有些連CC哥看起來也非常吃力。但是每次認(rèn)真分析完一個(gè)程序,雖然你還做不出同樣的程序,但是你的編程思路都會得到拓寬。CC哥再一次強(qiáng)調(diào),Scratch是一個(gè)非常好的鍛煉思維的工具,通過它可以提升小朋友的思維的科學(xué)性,嚴(yán)謹(jǐn)性,邏輯性,創(chuàng)造性。至于是不是一定要編寫出復(fù)雜的程序,并不重要。
聲明:本文章由網(wǎng)友投稿作為教育分享用途,如有侵權(quán)原作者可通過郵件及時(shí)和我們聯(lián)系刪除
