2012年6月16日 星期六
Blockly Maze迷宮中文版
中文化一下maze迷宮。透過程式積木來控制Google地圖小人在迷宮地圖上行走。
http://www.gasolin.idv.tw/public/blockly/demos/mazetw/index.html
附上最直觀的解法。
2012年6月14日 星期四
周蟒積木版的一些更新
周蟒積木版是基於Blockly製作的中文視覺化編程版本,目前已開發的新功能如下:
離線使用
現在周蟒積木版已支援離線使用,只要連到
http://www.gasolin.idv.tw/public/blockly/demos/codetw/index.html
並將這網址設成書籤,這樣一來下次離線時也能使用。
儲存/載入積木 (已整合回Blockly)
可參考加入'輸入'積木,允許匯入其他人製作的程式。
保存最後編輯狀態 (已整合回Blockly)
之前在離開瀏覽器畫面、重新載入、或是按「上一頁」鍵後,目前編輯的積木會消失。
現已透過localStorage儲存最後編輯狀態,在下次開啟時即自動讀入。
並新增「清除」按鈕,按下按鈕後可清除畫面上的積木。
對照範例
依照「咬一口周蟒」裡的範例,用積木版重新做了一遍,可對照「咬一口周蟒」來學習。
離線使用
現在周蟒積木版已支援離線使用,只要連到
http://www.gasolin.idv.tw/public/blockly/demos/codetw/index.html
並將這網址設成書籤,這樣一來下次離線時也能使用。
儲存/載入積木 (已整合回Blockly)
可參考加入'輸入'積木,允許匯入其他人製作的程式。
保存最後編輯狀態 (已整合回Blockly)
之前在離開瀏覽器畫面、重新載入、或是按「上一頁」鍵後,目前編輯的積木會消失。
現已透過localStorage儲存最後編輯狀態,在下次開啟時即自動讀入。
並新增「清除」按鈕,按下按鈕後可清除畫面上的積木。
提供輸入積木 (已整合回Blockly)
可參考加入'輸入'積木,允許製作文字互動遊戲(如猜數字)。
對照範例
依照「咬一口周蟒」裡的範例,用積木版重新做了一遍,可對照「咬一口周蟒」來學習。
語系無關的獨立XML
現在Blockly新版能產生與不同語系無關的獨立XML,周蟒積木版也已更新到最新的svn版本。
另一個好消息是我已經取得 Blockly 的 committer 權限,會和 Blockly 的開發者合作地更緊密,這些功能也將儘快回饋給 Blockly。
2012年6月12日 星期二
周蟒積木版範例(二)
2012/8/19 更新
繼續試驗咬一口周蟒文件中的範例
函式 https://code.google.com/p/zhpy/wiki/ZhpyFunctions
簡單的自訂函式範例
局部變量範例
目前不支援局部變量,變量全為全局變量。
模組 https://code.google.com/p/zhpy/wiki/ZhpyModules
目前不支援 import 模組。
資料結構 https://code.google.com/p/zhpy/wiki/DataStructure
購物清單範例
沒有列表排序(sort)積木、刪除列表項目積木。
為了生成各種語言程式,Blockly目前並未支援各語言特有的一些型別(type)與操作。也不支援較高階組織程式的方式。當然這些都可以自行訂製。目前看起來Blockly程式積木塊的定義方式很清晰,經過實際驗證,訂製成中文版也完全可行。
看來周蟒積木版有持續發展的可能。
繼續試驗咬一口周蟒文件中的範例
函式 https://code.google.com/p/zhpy/wiki/ZhpyFunctions
簡單的自訂函式範例
非常完美。
函式參數呼叫範例
2012/8/19) 更新後已支援傳入參數。
局部變量範例
目前不支援局部變量,變量全為全局變量。
模組 https://code.google.com/p/zhpy/wiki/ZhpyModules
目前不支援 import 模組。
資料結構 https://code.google.com/p/zhpy/wiki/DataStructure
購物清單範例
沒有列表排序(sort)積木、刪除列表項目積木。
為了生成各種語言程式,Blockly目前並未支援各語言特有的一些型別(type)與操作。也不支援較高階組織程式的方式。當然這些都可以自行訂製。目前看起來Blockly程式積木塊的定義方式很清晰,經過實際驗證,訂製成中文版也完全可行。
看來周蟒積木版有持續發展的可能。
周蟒積木版範例(一)
要驗證積木版這個概念行不行得通,就是把之前寫的咬一口周蟒的範例拿來再做一遍,看看能不能跑
下載與安裝 https://code.google.com/p/zhpy/wiki/DownloadInstall
學習程式的第一個範例 https://code.google.com/p/zhpy/wiki/ExampleHello
不用安裝,直接到 http://www.gasolin.idv.tw/public/blockly/demos/codetw/index.html 執行
開了就是預設的編輯器。也不用適應額外的編輯器
Hello world 範例如下
學習過程中不用再去學習quote、留白。要看「印出」語句的功能,只要將滑鼠移到對應積木上一陣子,就會出現功能說明(英文)。
基礎觀念 https://code.google.com/p/zhpy/wiki/BasicConcept
印出變數範例如下
不需記憶有哪些運算元,要字串或數字時,從對應的積木區塊中挑選即可。
目前版本的缺點是不支援copy/paste積木,每個積木都得從積木區塊中選取。
運算符號和表達式 https://code.google.com/p/zhpy/wiki/OperatorExpressions
算面積與周長範例如下
「建立字串使用」積木比較要稍微學習一下,但還算容易使用。
控制流程 https://code.google.com/p/zhpy/wiki/ControlFlow
猜數字範例如下
在javascript上執行正常,但因為缺乏型別轉換(type conversion),產生的python script少了一個"int",不正確。
猜數字迴圈範例如下
迴圈的使用效果讓我印象很深刻。
for迴圈範例如下
看起來還不錯。
輸入範例如下
運作良好。
在試驗範例的過程中,我也根據實際使用修正了一下語句,現在應該更接近周蟒了。
因為不需要考慮輸入簡易度,「停止」(break)迴圈的另一個選擇是「繼續下一個」(continue)迴圈,比原本周蟒的「繼續」(continue)語句顯得更直白一些。
下載與安裝 https://code.google.com/p/zhpy/wiki/DownloadInstall
學習程式的第一個範例 https://code.google.com/p/zhpy/wiki/ExampleHello
不用安裝,直接到 http://www.gasolin.idv.tw/public/blockly/demos/codetw/index.html 執行
開了就是預設的編輯器。也不用適應額外的編輯器
Hello world 範例如下
學習過程中不用再去學習quote、留白。要看「印出」語句的功能,只要將滑鼠移到對應積木上一陣子,就會出現功能說明(英文)。
基礎觀念 https://code.google.com/p/zhpy/wiki/BasicConcept
印出變數範例如下
不需記憶有哪些運算元,要字串或數字時,從對應的積木區塊中挑選即可。
目前版本的缺點是不支援copy/paste積木,每個積木都得從積木區塊中選取。
運算符號和表達式 https://code.google.com/p/zhpy/wiki/OperatorExpressions
算面積與周長範例如下
「建立字串使用」積木比較要稍微學習一下,但還算容易使用。
控制流程 https://code.google.com/p/zhpy/wiki/ControlFlow
猜數字範例如下
2012/8/19更新) 新版本的輸入積木支援預設輸入型別(數字或文字):
在javascript上執行正常,但因為缺乏型別轉換(type conversion),產生的python script少了一個"int",不正確。
猜數字迴圈範例如下
for迴圈範例如下
看起來還不錯。
輸入範例如下
運作良好。
在試驗範例的過程中,我也根據實際使用修正了一下語句,現在應該更接近周蟒了。
因為不需要考慮輸入簡易度,「停止」(break)迴圈的另一個選擇是「繼續下一個」(continue)迴圈,比原本周蟒的「繼續」(continue)語句顯得更直白一些。
2012年6月9日 星期六
加入'輸入'積木
周蟒積木版在「字串」分類中加上「輸入」積木,現在可以做文字互動遊戲啦。
但因為目前generator的限制, 現在只能用變量來接兩個語句,不能嵌套著用。
畫面右側也多加入了儲存/載入按鈕,但目前只有在Chrome瀏覽器上測試過。
可讀性
Programs are meant to be read by humans and only incidentally for computers to execute- Don Knuth
周蟒積木版
周蟒積木版 集各種不實用編程(中文編程+視覺化編程)於一身 XD
透過拖拉積木的方式編程,結果可輸出為Python, Javascript等語言,並可在網頁上執行即時查看結果。
http://www.gasolin.idv.tw/public/blockly/demos/codetw/index.html
這個版本是基於google blockly製作的,
http://code.google.com/p/google-blockly/
為了支援中文編程,我協助 blockly 的 developer :
* 將messaging抽出,方便i18n化
* 支援non ASCII變量名
* 加入在網頁上直接執行(透過javascript)功能
這些改進都已經commit進Blockly svn裡了。
周蟒積木版跟周蟒的關係主要體現在
* 目標都是中文編程
* 盡量使用和周蟒一致的變量名
* 一樣可輸出Python
與周蟒相比,周蟒積木版免去了打程式碼的功夫、
能透過web使用,並提供更多種語言輸出(javascript,python)
也許會對教小朋友學編程更有幫助?
訂閱:
文章 (Atom)