【scratch大師級教程】

目錄

第一章:克隆體的私有變數

第二章:如何在scratch里輸入矢量中文

第三章:scratch的BLEAPI的雲端存儲和終端通訊

第四章:用scratch寫編程語言

第一章:克隆體的私有變數

首先,我們從一種特殊的角度來理解變數和和鏈表:n1.變數——可以變動的字元串或數字;n2.鏈表——多個變數的有序化,序數稱之為項數。

Scratch的腳本里是沒有「新建一個變數」的

。但是之前說過鏈表多個變數的有序化,所以,我們可以通過在一個鏈表裡新建一行,用替換某行的方式是其成為一個變數

。n

接下來是實例:

先讓舞台詢問「你要讓第幾個火柴人說話?」,接著詢問「說些什麼?」

但是只是這樣是遠遠不夠的。我們要新建一個變數組(即鏈表,以後都這樣稱呼),在裡面創建3個變數(即新建三項,以後也都這樣稱呼)。如圖所示:

火柴人克隆體須調用第一次回答的內容,即第幾個火柴人說話

。我們可以新建一個變數,再用腳本將變數設為第一次回答的內容。再利用腳本調用這個變數

。n不明真相的吃瓜群眾一號:「為什麼在調用時不直接調用第一次回答的內容,反而還得調用與第一次回答內容相同的變數呢

?」n孔明:「因為有第二次詢問。Scratch在偵測部分的腳本就有『回答』這一變數。但它會設為最新一次的回答。我們的腳本里詢問『第幾個火柴人說話』的結果是第一次回答,而還有一個第二次詢問,即詢問火柴人說話的內容。在調用回答的時候調用的時候『回答』這一變數已經設為第二次的了。所以我們要想調用第一次回答,必須用變數將它設為常數(即不可以變動的字元串或數字)」

接著,我們再把第(克隆體_話_項數)項{克隆體_話}設為第二次回答。

好的今天精品教程就到這裡,我們下次再見

第二章:如何在scratch中輸入矢量中文

今天我將向大家介紹 如何在scratch里輸入n矢量中文字體n眾所周知,自從scratch 2發布後,MIT官方就去掉了中文輸入,中國用戶無法在scratch里輸入中文,著實是一件令人頭疼的事情。n好在,scratch支持導入,我們可以藉助其他工具來達到這個目的。nPS:本次教程只針對矢量,點陣圖可以直接在網路上輸出字體再導入。

本章介紹兩種不同的方法。n方法1:準備工具:n1.Scratch 2n2.AI (Adobe illustrator)PS:建議下載CS6 CC或CC2014 CC2015版本,本次演示用AI CC 2015nAI CC 2015下載鏈接:http://yunpan.cn/cQIwE2U3GsfEvn提取碼:cfd1n此分享來自 @你見我的小熊碼 感謝這位吧友的分享 [原帖地址:http://tieba.baidu.com/p/3869972843 ]n下面開始正式介紹

1.下載並安裝AI(建議下載LZ在1樓提供的鏈接)n

n本次教程用AI CC 2015演示nAI CC 2015下載鏈接:http://yunpan.cn/cQIwE2U3GsfEvn提取碼:cfd1n此分享來自 @你見我的小熊碼

2.打開AI 新建一個空白文件n啟動界面如圖所示n

3.AI CC 2015界面如圖所示n

4.在頂部菜單欄點擊文件 再點擊新建,會出現下圖的 新建文檔 設置窗口(藍色標註為可更改項目,其他的在沒有深入學習AI前可以暫時忽略)n

就這樣,一個空白文件就創建成功了n5.接下來,選擇左側菜單欄的文字工具,在空白文稿上寫上你需要的字n

6.調整你輸入的字[左側藍色方框內可調整顏色,右側藍色方框內可調整字體和大小]n

7.確認無誤後,點擊文件,點擊存儲為來導出文字n

8.選擇保存位置,將保存格式選擇為.SVGn

n9.設置保存項目,先把SVG配置文件改為 SVG 1.0(某些scratch 2不支持SVG 1.1就選擇SVG 1.0比較保險)再把文字改為 轉換為輪廓(這樣可以使你導入的字體不帶背景,只有字體的輪廓,方便使用或移植)。確認無誤後點擊確定n

n10.存儲成功,趕緊試試導入scratch里吧(.SVG格式通常用瀏覽器打開,AI也可以打開。導入scratch里時請 更改為矢量模式 後再導入字體)

這是方法一,下面介紹第二種方法。

方法二:

準備工具:

1.G-Editor

2.性能較好的電腦

首先先介紹一下G-Editor

G-Editor是一個優雅且高效的Scratch衍生版,由我和眾多編程愛好者研發。

project.mybluelemons.com這裡是G-Editor官網,可以下載最新版本。

有了G-Editor就可以直接輸入矢量中文了,無需任何工具!!!!!

第三章:scratch的BLEAPI的雲端存儲和終端通訊

今天我們來講一講BleAPI正確的食用方法,不知道有沒有人已經無師自通了呢?

本章節以滑動條為藍本講述BLEAPI的強大。

我們上來老規矩,多餘的刪光,留下角色「Sliders」。

我們看看我們這次提供的調用腳本

接下來我們開始碼腳本。我們想要一個亮藍色的,亮藍色的RGB值是:43 165 226,我們把它填進去。

然後我們希望以x-80 y0(圖中打反了)為源點(定義見上圖),繪製一個長160的自由滑動條,最小0,最大160。自由滑動條就是對每次次滑動的值限制,想滑動多少就滑動對少。自由滑動條其實就是限制值為1的限制滑動條。

接下來後我們希望以x-80 y-20(圖中又打反了)為源點,繪製一個長160的限制滑動條,最小0,最大160(圖中忘打了),限制值為20。限制值就是每次滑動對滑動條的值增加或減少的值必須是限制值的倍數(可以為0倍)。那麼我們對於我們這個滑動條來說,用戶就只能滑動到0、20、40、60、80、100、120、140、160處,滑動到其它位置則會被四捨五入。則對於我們這個滑動條來說,用戶滑動到110處,則會自動跳轉至120:用戶滑動到109處,則會自動跳轉至100。

接下來我們需要新建2個變數來儲存滑動條的值。我們要用到"get value of slider {目標滑動條編號}"。這個腳本的作用是將指定滑動條的值輸出至變數「#value」。

然後我們需要一個「將{}設定為{}」腳本將變數「#value」轉存至另一個變數保存,因為我們只有一個變數「#value」。

關於滑動條的編號則是根據代碼的排序來的,按鈕API也是這樣。

然後我們把兩個滑動條的值都輸出,注意如果你希望自由滑動條輸出的值是一個整數的話你需要在外邊套一個「將{}四捨五入」。

然後我們把「update sliders」模塊也給加上去,注意排序,再套一個「重複執行」,再一按綠旗。這個時候我總算知道我之前一直輸錯了

所以我修正過後再按下了綠旗。嗯哼,效果不錯。

接下來再來介紹一下模塊"set value of slider {目標滑動條編號} to {目標值}"的用法。這個模塊的作用是設定一個滑動條的值,譬如我想把編號為1的這個自由滑動條的值設定為66,我們只要如上填寫;我想把編號為2的這個限制滑動條的值設定為75,我們如上填寫後激活它,依然是會按照限制規則四捨五入的,注意紅框里的兩個值。

最後補一下顏色更改,這個是補的圖,所以與常式有所不同。注意更改顏色不會更改底部灰色,畢竟灰色百搭。

好,到此我們的BleAPI的食用方法就全部結束了,如果喜歡請點個贊並關注一下我哦

第四章:用scratch寫編程語言

這一章我們將介紹貼吧上的一個大師級的scratch新玩法——用scratch寫自己的編程語言(取材來自團隊貼吧)

其實也不叫介紹,就是給大家用的

先放一張main方法的代碼

下面我們介紹一下main方法

main函數,又稱主函數,是程序執行的起點.main是相對來說的,如同音學理論之主調於泛音,泛音即程序中的除main之外的其他函數.main函數正是迎合人們的思考方式而生成的而非必定的模式.有主有次,執行起來條清縷析;既可將程序模塊化又實現了一個閉合的整體.main函數不是從最開始產生就不變的,不同語言給出了不同的看法

在這款scratch編程語言里

目前能夠編寫的代碼:n特殊變數n!tX !tY !tRot !plX !plY !plRot !pldisnnn$num 代表全局變數n&num 代表局部變數n#num 代表在全局棧內位置n%num 代表局部棧內位置nnn一次只能定義三個變數nvar A 定義變數npot A [x]定義變數A的變數表內位置為[x]ngar A 定義全局變數nnnpush A B 入局部棧 #-1=Bngpush A B 入全局棧 #-1=Bndel 刪除最後一個局部棧內數字ngdel 刪除最後一個全局棧內數字nnnmov A anadd A ansub A anmul A andiv A anrem A anint An修改;+-*/%roundninc Andec AnA++--nsin Ancos Antan Anasin Anacos Anatan Ansqrt AnpowE Anlog Anabs Anrnd A a b 將A隨機為int(a,b)ncnt A a 連接A a-->Annn"a":定義代碼段nijp "a" #-1!=0 -gotonnjp "a" #-1==0 -gotonjmp "a" gotonmel "a" "b" "c" #-1>0 --goto "a";==0--"b";<0--"c"nnnfunc "a"進程代碼段標記nend 結束代碼段並返回nent "a"將指針移動到標記代碼段ncte "a"創建一個名為a的進程nnnwait A 等待A秒nprint "a" b 輸出a b秒nnntp x y 傳送到x,ynmove time x y 在times內move到x,ynspd xadd yadd 將x,y增加ngo step 移動step步nangle a 將角度設為ananpl 將角度設置為自機狙nCW a 順時針旋轉a度nAC a 逆時針旋轉a度nnncos a 將外觀變為ancol h v 將改變色相,明度nsize a 改變大小為a%nlaydown a 下移a層nlaytop 移動到頂層nvisitable a a=0隱藏;a!=0顯示

來個簡單的例子,這一段代碼會生成10個enemy並在x=0的地方排列一下

func "main";nvar a;nmov a 10;npush 666;ngpush 666;njmp "cte2";n"cte1":;ndec a;nmov #-1 a;ncte "enemy1";n"wat1":;nmov %-1 #-1;nsub %-1 999;nnjp "cte2";nwait 0.1;njmp "wat1";n"cte2":;nmov %-1 a;nijp "cte1";nend "main";nnnfunc "enemy1";nvar b;nmov b #-1;nmov #-1 999;ntp 0 180;nmul b -10;nspd 0 b;n"move":;ngo 5;nCW 1;njmp "move";nwait 10000;nend "enemy1";

順便波與粒子的境界的代碼.有性趣可以試著解讀一下吧(

func "main";

cte "satori";

end "main";

func "satori";

push 1;

health 1000;

tp 0 100;

ctm 2;

vis 1;

var r radd;

mov r 0;

mov radd 0;

gpush 1;

gpush 1;

"shoot":;

add radd 3;

add r radd;

mov #1 r;

mov #2 0;

cte "bullet";

cte "bullet";

cte "bullet";

cte "bullet";

cte "bullet";

"wait":;

mov %1 #2;

sub %1 5;

ijp "wait";

jmp "shoot"

end "satori";

func "bullet";

var r rget;

mov rget #1;

add #2 1;

rem r 5;

mul r 72;

tp 0 100;

ctm 8;

vis 1;

add r rget;

angle r;

"move":;

go 5;

jmp "move";

end "bullet";

好的本章到此結束,期待第五章哦。

以上內容摘自編程少年論壇:最大的青少年編程社區 - 編程少年


推薦閱讀:

學著玩, 玩著學! 有效記憶
遍訪世界名校,發現最核心的教育做好一件事就行了
為什麼女生要學編程?
編程少年

TAG:LFSLinuxfromScratch | 少儿教育 | 儿童编程 |