拡張機能でセレクトボックス付きのブロックを作ってみよう


上のブロックのようなセレクトボックスで選んでもらう形式のコマンドブロックを作ってみます。

今回の機能は最初からTypeScriptで書き始める必要がありますので、MakeCodeのブロックプログラミングで関数を作り始めるといったことは不要です。


MakeCodeでJavaScriptのモードに切り替え、下記のコードを書きます。

//% color="#000000" icon="\uf1e6" block="セレクトボックス付き拡張機能"
namespace myExtensionWithSelectBox {

    export enum MyOptions {
        //% block="選択肢A"
        OptionA = 1,
        //% block="選択肢B"
        OptionB = 2,
        //% block="選択肢C"
        OptionC = 3
    }

    //% block="コマンドを実行: %choice"
    export function fn(choice: MyOptions): void {
        // 選択された値に応じた処理
        switch (choice) {
            case MyOptions.OptionA: // オプションAの時の処理
                basic.showString('a')
                break;
            case MyOptions.OptionB: // オプションBの時の処理
                basic.showString('b')
                break;
            case MyOptions.OptionC: // オプションCの時の処理
                basic.showString('c')
                break;
        }
    }
}

今までのブロックと異なるのは、列挙型のenumで定数のグループを作成した後、コマンドブロック用の関数の引数でenumを指定します。

上記の対応でコマンドブロックにセレクトボックス型の値の指定の仕組みが追加されます。

京都の東本願寺で開催されているプログラミング教室で講師をしています。
詳しくはTera schoolを御覧ください。
同じカテゴリーの記事
マインクラフト用ビジュアルエディタを開発しています。

詳しくはinunosinsi/mcws_blockly - githubをご覧ください。