-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBitSPlay.js
More file actions
92 lines (69 loc) · 1.78 KB
/
Copy pathBitSPlay.js
File metadata and controls
92 lines (69 loc) · 1.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*
Quick little project that came about just because, like most of the things
It just displays sixteen bits. Value display and randomizer can be disabled
Simple concept, fun little late afternoon project. Napme plays on words
BitS Play. I guess "Y" should also be capitalised. Oh well.
by gib
*/
const dialog = require("dialog");
const display = require("display");
const doRandoms = true;
const showVal = true;
var do_run = true;
var didChange = true;
var number = 65535;
display.setTextAlign("right");
function drawBits(num, x, y, size, gap){
if(x === undefined) x = 0;
if(y === undefined) y = 0;
if(size === undefined) size = 4;
if(gap === undefined) gap = 2;
for(var i = 0; i < 16; i++){
var bit = (num >>> (15 - i)) & 1;
var xDiag = x + i * (size + gap);
var yDiag = y = xDiag * 170 / 320;
if(bit){
display.drawFillCircle(xDiag, yDiag, size, BRUCE_PRICOLOR);
}
else{
display.drawCircle(xDiag, yDiag, size, BRUCE_PRICOLOR);
}
}
}
function handleInput(){
if(keyboard.getEscPress()){
do_run = false;
}
if(keyboard.getNextPress()){
number++;
if(number > 65535) number = 0;
didChange = true;
}
if(keyboard.getPrevPress()){
number--;
if(number < 0) number = 65535;
didChange = true;
}
if(keyboard.getSelPress() && !didChange){
var promptedVal = keyboard.numKeyboard(to_string(doRandoms ? random(0, 65535) : number), 8, "Give me a number!");
number = Number(promptedVal);
didChange = true;
}
}
function main(){
while(do_run){
handleInput();
if(didChange){
display.fill(BRUCE_BGCOLOR);
// Tinker more later. Good for now
drawBits(number, 8, 50, 12, 8);
if(showVal){
display.setCursor(320 - (to_string(number).length * 12), 0);
display.println(to_string(number));
}
delay(100);
didChange = false;
}
}
}
main();