程式積木 - 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 裡依序執行。