程式積木 - ywchiao/cocoa GitHub Wiki

程式積木 (brick) 是 Scratch 這類圖像化程式開發環境的基礎;每個程式控制結構都由不同的積木代表,如__迴圈__(loop), 分支(branching),動作(action)等;目標是讓使用者寫作程式就像堆疊積木一般直覺。

在 cocoa 專案裡,使用的圖像化程式開發環境稱為 Omino。在 Omino 裡每個__程式積木__(以下稱作__brick__)都由一個__物件__(object)代表,而__區塊型__的積木 (block type brick) 則有一個 list 結構來記錄區塊內的其它積木。如下面的 Java 片段:

    public class LoopBrick extends Brick {
        private Vector<Brick> bricks[];

        public void brickInsert(int index, Brick brick) {
            bricks.add(index, brick);
        } // brickInsert()

        public Brick brickRemove(Brick brick) {
            bricks.remove(brick);
        } // brickRemove()

        public void evaluate() {
            bricks.elements().forEach((brick) -> {
                brick.evaluate();
            });
        } // evaluate()
    } // LoopBrick

當使用者拖曳 (drag) 一個新的程式積木進入 LoopBrick 時, cocoa 引擎偵測到使用者意圖,呼叫 LoopBrick 的 brickInsert(...) 方法將新的 brick 置入 Vector 裡的適當位置;同樣的,當使用者將某個 brick 拖出 LoopBrick 時, LoopBrick.brickRemove(...) 會被呼叫,以將對應的 brick 移除。

程式執行時,則由 Vector 裡依序執行。

⚠️ **GitHub.com Fallback** ⚠️