Skip to content

Commit 234f35a

Browse files
committed
Fully implemented rainbow mode
Added author comments
1 parent 721dd8f commit 234f35a

File tree

5 files changed

+156
-5
lines changed

5 files changed

+156
-5
lines changed

Alphabet.pde

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
/*
2+
Author: Kuba Gasiorowski
3+
https://github.com/kgasiorowski/digital-rain
4+
*/
5+
16
class Alphabet extends ArrayList<Character>{
27

38
public Alphabet(){

Cell.pde

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
/*
2+
Author: Kuba Gasiorowski
3+
https://github.com/kgasiorowski/digital-rain
4+
*/
5+
16
class Cell{
27

38
public boolean active;

CellMatrix.pde

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
/*
2+
Author: Kuba Gasiorowski
3+
https://github.com/kgasiorowski/digital-rain
4+
*/
5+
16
final int DEFAULT_LIFETIME = 100;
27
final int DEFAULT_CASCADETIME = 1;
38

Matrix.pde

Lines changed: 67 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
/*
2+
Author: Kuba Gasiorowski
3+
https://github.com/kgasiorowski/digital-rain
4+
*/
5+
16
int cellSide;
27
int numCols, numRows, cellWidth, cellHeight;
38

@@ -16,6 +21,11 @@ int CURRENT_COLOR_INDEX = 0;
1621

1722
final color[] colors = {GREEN, RED, BLUE, YELLOW, PURPLE, BRIGHT_BLUE};
1823

24+
boolean RAINBOW_MODE = false;
25+
boolean PAUSE_RAINBOW = false;
26+
final int DEFAULT_RAINBOW_PERIOD = 500;
27+
int framecounter = 0;
28+
1929
void keyPressed(){
2030

2131
if(key == CODED){
@@ -24,37 +34,78 @@ void keyPressed(){
2434

2535
case LEFT:
2636
CURRENT_COLOR_INDEX--;
27-
if(CURRENT_COLOR_INDEX < 0)
28-
{
37+
if(CURRENT_COLOR_INDEX < 0){
2938

3039
CURRENT_COLOR_INDEX = colors.length-1;
3140

3241
}
3342
break;
3443
case RIGHT:
3544
CURRENT_COLOR_INDEX++;
36-
if(CURRENT_COLOR_INDEX > colors.length-1)
37-
{
45+
if(CURRENT_COLOR_INDEX > colors.length-1){
3846

3947
CURRENT_COLOR_INDEX = 0;
4048

4149
}
4250
break;
51+
case UP:
52+
if(RAINBOW_MODE){
53+
54+
framecounter = int(map(framecounter, 0, frames, 0, frames+10)); // Allows for smooth transitions
55+
frames += 10;
56+
println(frames);
57+
58+
}
59+
break;
60+
case DOWN:
61+
if(RAINBOW_MODE){
62+
63+
if(frames <= 10)
64+
break;
65+
framecounter = int(map(framecounter, 0, frames, 0, frames-10)); // Allows for smooth transitions
66+
frames -= 10;
67+
println(frames);
68+
69+
}
70+
break;
71+
case SHIFT:
72+
if(RAINBOW_MODE){
73+
74+
framecounter = int(map(framecounter, 0, frames, 0, DEFAULT_RAINBOW_PERIOD)); // Allows for smooth transitions
75+
frames = DEFAULT_RAINBOW_PERIOD;
76+
println(frames);
77+
78+
}
79+
break;
4380

4481
}
4582

4683
}else{
4784

4885
int key_int = (int)key;
4986

50-
if(key_int >= 49 && key_int <= 54){
87+
if(key_int >= 49 && key_int <= 55){
5188

5289
CURRENT_COLOR_INDEX = key_int - 49;
5390

91+
}else if(key == 'r'){
92+
93+
RAINBOW_MODE = !RAINBOW_MODE;
94+
framecounter = 0;
95+
96+
}else if(key == ' '){
97+
98+
if(RAINBOW_MODE){
99+
100+
PAUSE_RAINBOW = !PAUSE_RAINBOW;
101+
102+
}
103+
54104
}
55105

56106
}
57107

108+
58109
CURRENT_COLOR = colors[CURRENT_COLOR_INDEX];
59110

60111
}
@@ -83,6 +134,17 @@ void draw(){
83134

84135
background(0);
85136

137+
if(RAINBOW_MODE){
138+
139+
if(!PAUSE_RAINBOW)
140+
framecounter++;
141+
CURRENT_COLOR = get_rainbow_color(framecounter);
142+
143+
if(framecounter > frames)
144+
framecounter = 0;
145+
146+
}
147+
86148
matrix.step();
87149
matrix.draw();
88150

Rainbow.pde

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/*
2+
Author: Kuba Gasiorowski
3+
https://github.com/kgasiorowski/digital-rain
4+
*/
5+
6+
// Rainbow code will probably go here
7+
/* R G B
8+
1. 255 000 000 (red) <--
9+
2. 255 128 000 (orange) |
10+
3. 255 255 000 (yellow) <--
11+
4. 128 255 000 (yellow-green) |
12+
5. 000 255 000 (green) <--
13+
6. 000 255 128 (blue-green) |
14+
7. 000 255 255 (teal) <--
15+
8. 000 128 255 (blue) |
16+
9. 000 000 255 (indigo) <--
17+
10. 128 000 255 (purple) |
18+
11. 255 000 255 (magenta) <--
19+
12. 255 000 128 (pink) |
20+
13. 255 000 000 (red) <--
21+
*/
22+
23+
int frames = 500;
24+
25+
color get_rainbow_color(int offset){
26+
27+
int red = 0, green = 0, blue = 0;
28+
29+
if(offset <= frames/6){
30+
31+
red = 255;
32+
green = int(map(offset, 0, frames/6, 0, 255));
33+
blue = 0;
34+
35+
}else if(offset > frames/6 && offset <= frames/6*2){
36+
37+
red = int(map(offset, frames/6, frames/6*2, 255, 0));
38+
green = 255;
39+
blue = 0;
40+
41+
}else if(offset > frames/6*2 && offset <= frames/6*3){
42+
43+
red = 0;
44+
green = 255;
45+
blue = int(map(offset, frames/6*2, frames/6*3, 0, 255));
46+
47+
}else if(offset > frames/6*3 && offset <= frames/6*4){
48+
49+
red = 0;
50+
green = int(map(offset, frames/6*3, frames/6*4, 255, 0));
51+
blue = 255;
52+
53+
}else if(offset > frames/6*4 && offset <= frames/6*5){
54+
55+
red = int(map(offset, frames/6*4, frames/6*5, 0, 255));
56+
green = 0;
57+
blue = 255;
58+
59+
}else if(offset > frames/6*5 && offset <= frames/6*6){
60+
61+
red = 255;
62+
green = 0;
63+
blue = int(map(offset, frames/6*5, frames/6*6, 255, 0));
64+
65+
}else{
66+
67+
// The ifelse block above is missing one value, so it flashes black when it should loop around
68+
return #FF0000;
69+
70+
}
71+
72+
return color(red, green, blue);
73+
74+
}

0 commit comments

Comments
 (0)