デアゴスティーニ商法作業管理での11日目作業

今日の作業は「スライダーのメモリ位置と表示数値を連動させる」です。

今までスライダー名として表示していた「SIZE」は、ライフゲームのドットの大きさを表します。最小で1(ドットbyドット)、最大で64です。

以下のように、1ならスライダーの左端、32なら真ん中、64なら右端になるように調整しました。


数字の桁数によって、ちゃんと位置が真ん中になるよう調整もしました。画像上、値と実際のライフゲームのドットサイズが連動しているように見えますが、実際にはまだ連動していません。これは後日作業する予定です。

プログラミング上、数値を文字に変換する処理は多用します。うまく汎用化して今後使い回して行きたいところです。

あまり需要がないかもしれませんが、今回作成した0〜9999までの数値を全角数字の文字列に変換する処理は以下の通りです。言語はJavaScriptです。(WebGLで作ってるからね)

numToStrZen(num) {
    if (num < 0 || 9999 < num) {
        return "ERR!";
    }
    let keta4 = Math.floor(num / 1000);
    let keta3 = Math.floor((num - keta4 * 1000) / 100);
    let keta2 = Math.floor((num - keta4 * 1000 - keta3 * 100) / 10);
    let keta1 = Math.floor(num - keta4 * 1000 - keta3 * 100 - keta2 * 10);
    let s4 = this.oneNumToStrZen(keta4);
    let s3 = this.oneNumToStrZen(keta3);
    let s2 = this.oneNumToStrZen(keta2);
    let s1 = this.oneNumToStrZen(keta1);
    if (0 == keta4 && 0 == keta3 && 0 == keta2) {
        return s1;
    } else if (0 == keta4 && 0 == keta3) {
        return s2 + s1;
    } else if (0 == keta4) {
        return s3 + s2 + s1;
    } else {
        return s4 + s3 + s2 + s1;
    }
}
oneNumToStrZen(num) {
    if (0 == num) { return '0'};
    if (1 == num) { return '1'};
    if (2 == num) { return '2'};
    if (3 == num) { return '3'};
    if (4 == num) { return '4'};
    if (5 == num) { return '5'};
    if (6 == num) { return '6'};
    if (7 == num) { return '7'};
    if (8 == num) { return '8'};
    if (9 == num) { return '9'};
    return "!";
}

ちなみに、範囲外の数値を投げると"ERR!"という文字を返します。

今日の作業は以上です!

コメントを残す

メールアドレスが公開されることはありません。