以前在幫朋友蒐集少兒編程教育資料的時候,發現了麻省理工開發的積木式編程語言的Scratch,最近有空玩了下,感受很驚豔,我能想象用它作一些有趣的事情,Scratch把編程元素變成像樂高積木同樣,能夠經過簡單拖放組合來實現邏輯,交互體驗很不錯,很容易就能實現一些簡單的動畫控制,在實現複雜一些的邏輯的時候,搭積木的方式會顯得繁瑣,這個是編程模式的緣由,不過相信會有不少聰明才智的解決方法,有時真想直接敲幾行代碼搞定。 Scatch最讓我喜歡的是能夠直接在web上運行,其官方社區搭建得很好, 能夠看到來自世界各地朋友的做品,若是你感興趣,甚至能夠一探其做品內部積木結構的究竟。web
我下載的時候新出了3.0的版本,因爲我也是新接觸,因此相較於2.0以前的變化,就不太瞭解了,我就從3.0開始玩,記錄一些對Scatch的初印象:編程
1:和大部分的2D引擎同樣,Scratch也有舞臺和精靈的概念,舞臺能夠作不一樣的場景,精靈(sprite)就是舞臺上活動的元素了。每一個場景和精靈,均可以在其內部搭建積木來實現特定的邏輯,好比監聽某個事情,觸發某個動做。app
2:Scratch提供了不少通用積木,有控制精靈的動做,外觀,聲音的,有設置事件的,有控制流程的(while, if...else...等等),有偵測碰撞的,有數學計算的,有設置變量的。有趣的地方在於積木有不一樣的形狀和凹槽,用於識別其類型和接入其餘積木,好比圓形的積木能夠簡單理解爲變量,方尖的積木能夠理解爲條件,帶上下凹槽的可能是用於控制流程,能夠互相上下拼接,只是有些積木沒有上凹槽,說明只能用於開始,有些沒有下凹槽,說明其後面不能再接其餘積木。編程語言
3:每一個精靈或場景都是能夠帶有多個積木組的,方便把不一樣的邏輯分開,不要讓一個積木組太長。編輯器
4:每一個精靈和場景自身均可以有多個幀,Scratch裏叫作造型,用來表現不一樣的動做或者階段,好比,能夠用上圖中右邊的積木排列,來實現一個精靈的自身動畫,記得加上等待時間的積木,否則循環速度太快,就看不到動做了:動畫
5:使用變量積木,給程序添加變量來記錄變化值,而後經過變量做爲條件,能夠實現許多基礎的邏輯;插件
6:Scratch是支持離線開發的,有window和mac桌面版本,能夠在本地開發,保存爲.sb3的文件,而後能夠導入到線上編輯器,反之亦然,這個能夠實現必定程度的協同。orm
初次嘗試,修改了一個追球的小遊戲,增長了得分使場景的變化,每一個場景的倒計時間會愈來愈短: Chase Ball II on Scratchblog
好奇與探索:遊戲
1:Scratch是能夠在官網的web上運行的,我在想如何能夠在本身的web上運行起來,是否是有提供什麼插件或是js的解析組件。
2:聽說3.0能夠支持移動設備,是否就是在移動設備上用web運行,仍是說有裝門的移動版本的運行app。
3:頗有意思的是積木的擴展,除了基礎的積木,我已經看到Scratch支持Lego的Mind Storms EV3, 我想會繼續探索下去。
追加的疑問與已知的解答:
1:一個已經shared的項目,怎麼進行修改,打開修改,從新導入後變成了一個新的項目。
2:如何給一個項目設置封面。
Scratch項目是以最新保存時的界面做爲展現的封面的, 有兩個解決方法,第一種簡單的就是保存時選一個好的界面, 第二種就是專門去作一個封面,並確保程序開始的時候把這個封面隱藏掉便可。