許多人有一種刻板印象,要成為程式設計師,必定是英文及數學奇材,但事實上多數程式語言的保留字和函式庫會用到的都是固定的單字,經常使用自然就能記下來,此外在程式設計的過程中,邏輯清楚往往比死背一堆數學公式更為重要。
不過對於從未接觸程式設計的人來說,日後的學習成效往往取決於第一印象的好壞,因此如 Scratch、Blockly 這類入門程式設計工具,對於學生的吸引力相對是較高的,也容易激發興趣。Google 在2012年時推出 Blockly,是一款開源的圖像式程式編輯工具,特色是將程式設計具像化為積木的拖曳和組合,不用手動輸入程式碼就能實現基礎的程式設計應用,並且能夠匯出成為標準的 JavaScript 程式語言,本篇的 Blockly Games,則是 Google 於2004年推出,藉由循序漸進的遊戲目標,將程式語言的概念融入遊戲過程中,當然,為了避免流於單純的攻略,這裡並不會列出所有關卡的解法。
拼圖關卡:瞭解資料型態及組成方式
在 Blockly Games 第一關「拼圖」當中,可以發現 Blockly 的主要視覺表現形式就是「積木」,此關的目標是替每個動物加上圖片、輸入腿的數量並加入其擁有的特徵,在這裡我們可以看到程式語言中會應用到的一些基本資料型態,像是整數、字串以及圖片等等,而藉由滑鼠拖拉積木並將其組合在一起時,其實就是替物件(動物)賦予其屬性(圖片、特徵等),雖然牠們都是動物,但只需要加入屬性的差異,電腦便能加以區分,這即是物件導向程式設計的基本概念。
Blockly Games
網址:https://blockly-games.appspot.com/





迷宮關卡:程式運作的三種流程控制
從迷宮關開始,每一關都會有10個小關,當過關之後則會顯示對應的 JavaScript 程式碼,便於讓學習者可以互相對照,瞭解程式碼的編寫格式與邏輯。迷宮關卡最重要的是加入了流程控制的概念,包含循序、迴圈以及分支三種主要結構。「循序」代表依順序執行指令;「迴圈」則代表某重複執行某段指令,「分支」則是依照條件設定之不同,而會執行不同的指令。就程式設計實務上而言,而不管多麼複雜的程式流程,基本上都不脫這三種控制結構的範圍。











小鳥關卡:進階的分支條件控制
此關卡的首要目標是控制小鳥吃到蟲子,並讓牠安全的飛回鳥巢,比起迷宮關卡的單純前進或轉彎來說,小鳥的移動方式較為複雜,我們除了藉由函式來定義小鳥的行進外,還要透過參數來指定其飛行的角度,同時由於小鳥必須先吃到蟲子之後,才能回到終點(鳥巢),所以這一個關卡的邏輯概念,其實是一種有條件的控制,相同的概念包括猜拳遊戲以及計程車費率計算等等,例如計程車起程1公里是90元,超過1公里後以每200公尺5元計算,因此就必須分別應用不同的條件式。











下一頁還有更多招數!
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!