今日の作業は「スライダーのメモリ位置と表示数値を連動させる」です。
今までスライダー名として表示していた「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!"という文字を返します。
今日の作業は以上です!