@@ -43,7 +43,8 @@ namespace snowflake {
43
43
[ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
44
44
[ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ]
45
45
let _snow : number [ ] [ ] = [ ]
46
- let _BG : number [ ] = default_BG
46
+ let _BG : number [ ] = [ ]
47
+ _BG = default_BG
47
48
48
49
control . inBackground ( function update ( ) {
49
50
while ( true ) {
@@ -74,13 +75,13 @@ namespace snowflake {
74
75
r = t % 16
75
76
g = ( t >> 4 ) % 16
76
77
b = ( t >> 8 ) % 16
77
- if ( x % 2 ) setpixel ( y * 2 , x , neopixel . rgb ( r , g , b ) )
78
- else setpixel ( 15 - y * 2 , x , neopixel . rgb ( r , g , b ) )
78
+ if ( x % 2 ) setpixel ( y * 2 , x , [ r , g , b ] )
79
+ else setpixel ( 15 - y * 2 , x , [ r , g , b ] )
79
80
r = ( t >> 12 ) % 16
80
81
g = ( t >> 16 ) % 16
81
82
b = ( t >> 20 ) % 16
82
- if ( x % 2 ) setpixel ( y * 2 + 1 , x , neopixel . rgb ( r , g , b ) )
83
- else setpixel ( 14 - y * 2 , x , neopixel . rgb ( r , g , b ) )
83
+ if ( x % 2 ) setpixel ( y * 2 + 1 , x , [ r , g , b ] )
84
+ else setpixel ( 14 - y * 2 , x , [ r , g , b ] )
84
85
}
85
86
}
86
87
@@ -106,48 +107,21 @@ namespace snowflake {
106
107
load_bg ( _BG )
107
108
}
108
109
109
- // get red channel
110
- function getR ( color : number ) : number {
111
- return ( color >> 16 ) % 256
112
- }
113
-
114
- // get green channel
115
- function getG ( color : number ) : number {
116
- return ( color >> 8 ) % 256
117
- }
118
-
119
- // get blue chnnel
120
- function getB ( color : number ) : number {
121
- return color % 256
122
- }
123
-
124
110
// overlying two color
125
- function overlying ( row : number , col : number , color : number , add : boolean ) : void {
111
+ function overlying ( row : number , col : number , color : number [ ] , add : boolean ) : void {
126
112
let c = getpixel ( row , col )
127
- let r0 = 0
128
- let g0 = 0
129
- let b0 = 0
130
- let r1 = 0
131
- let g1 = 0
132
- let b1 = 0
133
- r0 = getR ( c )
134
- g0 = getG ( c )
135
- b0 = getB ( c )
136
- r1 = getR ( color )
137
- g1 = getG ( color )
138
- b1 = getB ( color )
139
- if ( add ) setpixel ( row , col , neopixel . rgb ( r0 + r1 , g0 + g1 , b0 + b1 ) )
140
- else setpixel ( row , col , neopixel . rgb ( r0 - r1 , g0 - g1 , b0 - b1 ) )
113
+ if ( add ) setpixel ( row , col , [ c [ 0 ] + color [ 0 ] , c [ 1 ] + color [ 1 ] , c [ 2 ] + color [ 2 ] ] )
114
+ else setpixel ( row , col , [ c [ 0 ] - color [ 0 ] , c [ 1 ] - color [ 1 ] , c [ 2 ] - color [ 2 ] ] )
141
115
}
142
116
143
117
//% block="set pixel row %row|col %col|color %color"
144
- function setpixel ( row : number , col : number , color : number ) : void {
145
- if ( col % 2 ) _np . setPixelColor ( col * 16 + 15 - row , color )
146
- else _np . setPixelColor ( col * 16 + row , color )
118
+ function setpixel ( row : number , col : number , color : number [ ] ) : void {
119
+ if ( col % 2 ) _np . setPixelColor ( col * 16 + 15 - row , neopixel . rgb ( color [ 0 ] , color [ 1 ] , color [ 2 ] ) )
120
+ else _np . setPixelColor ( col * 16 + row , neopixel . rgb ( color [ 0 ] , color [ 1 ] , color [ 2 ] ) )
147
121
}
148
122
149
123
//% block="get pixel row %row|col %col"
150
- function getpixel ( row : number , col : number ) : number {
124
+ function getpixel ( row : number , col : number ) : number [ ] {
151
125
let r = 0
152
126
let g = 0
153
127
let b = 0
@@ -166,15 +140,15 @@ namespace snowflake {
166
140
r = _np . buf [ offset + 1 ] ;
167
141
}
168
142
b = _np . buf [ offset + 2 ] ;
169
- return neopixel . rgb ( r , g , b )
143
+ return [ r , g , b ]
170
144
}
171
145
172
146
/**
173
147
* config snwo flake
174
148
*
175
149
*/
176
150
//% block="config Pin %pin|cover %cover|threshold %threshold|snowfall %snowfall|most at a time %MostAtATime|speed %speed"
177
- //% cover.defl=true
151
+ //% cover.defl=false
178
152
//% pin.defl=DigitalPin.P1
179
153
//% threshold.defl=8 threshold.max=100 threshold.min=1
180
154
//% snowfall.defl=50 snowfall.max=100 snowfall.min=1
@@ -198,7 +172,7 @@ namespace snowflake {
198
172
/**
199
173
* start running
200
174
*/
201
- //% block="start snow "
175
+ //% block="start"
202
176
//% weight = 80
203
177
export function start ( ) : void {
204
178
_update = true
@@ -207,7 +181,7 @@ namespace snowflake {
207
181
/**
208
182
* pause running
209
183
*/
210
- //% block="pause snow "
184
+ //% block="pause"
211
185
//% weight = 70
212
186
export function pause ( ) : void {
213
187
_update = false
@@ -216,7 +190,7 @@ namespace snowflake {
216
190
/**
217
191
* Restart again
218
192
*/
219
- //% block="reset snow "
193
+ //% block="reset"
220
194
//% weight = 60
221
195
export function reset ( ) {
222
196
_pile = [ [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
@@ -245,12 +219,12 @@ namespace snowflake {
245
219
for ( let i = 0 ; i < _snow . length ; i ++ ) {
246
220
let c = _snow [ i ]
247
221
if ( c [ 0 ] > - 1 ) {
248
- overlying ( c [ 0 ] , c [ 1 ] , neopixel . rgb ( c [ 2 ] , c [ 2 ] , c [ 2 ] ) , false )
222
+ overlying ( c [ 0 ] , c [ 1 ] , [ c [ 2 ] , c [ 2 ] , c [ 2 ] ] , false )
249
223
}
250
224
c [ 0 ] += 1
251
225
c [ 1 ] += Math . randomRange ( - 1 , 1 )
252
226
c [ 1 ] = Math . max ( 0 , Math . min ( c [ 1 ] , 15 ) )
253
- overlying ( c [ 0 ] , c [ 1 ] , neopixel . rgb ( c [ 2 ] , c [ 2 ] , c [ 2 ] ) , true )
227
+ overlying ( c [ 0 ] , c [ 1 ] , [ c [ 2 ] , c [ 2 ] , c [ 2 ] ] , true )
254
228
}
255
229
}
256
230
@@ -276,12 +250,12 @@ namespace snowflake {
276
250
b = _pile [ row - 11 ] [ col + 1 ] >= _threshold ? true : false
277
251
}
278
252
if ( _pile [ row - 11 ] [ col ] >= _threshold ) {
279
- overlying ( c [ 0 ] , c [ 1 ] , neopixel . rgb ( c [ 2 ] , c [ 2 ] , c [ 2 ] ) , false )
253
+ overlying ( c [ 0 ] , c [ 1 ] , [ c [ 2 ] , c [ 2 ] , c [ 2 ] ] , false )
280
254
if ( a && b ) {
281
255
if ( _pile [ row - 12 ] [ col ] < _threshold ) {
282
256
_pile [ row - 12 ] [ col ] += c [ 2 ]
283
257
if ( _pile [ row - 12 ] [ col ] >= _threshold ) {
284
- overlying ( c [ 0 ] , c [ 1 ] , neopixel . rgb ( 8 , 8 , 8 ) , true )
258
+ overlying ( c [ 0 ] , c [ 1 ] , [ 8 , 8 , 8 ] , true )
285
259
_line ( )
286
260
}
287
261
}
@@ -294,7 +268,7 @@ namespace snowflake {
294
268
for ( let i = 0 ; i < n ; i ++ ) {
295
269
let c = _snow [ n - 1 - i ]
296
270
if ( c [ 0 ] > 14 ) {
297
- overlying ( c [ 0 ] , c [ 1 ] , neopixel . rgb ( c [ 2 ] , c [ 2 ] , c [ 2 ] ) , false )
271
+ overlying ( c [ 0 ] , c [ 1 ] , [ c [ 2 ] , c [ 2 ] , c [ 2 ] ] , false )
298
272
_snow . removeAt ( n - 1 - i )
299
273
}
300
274
}
@@ -309,29 +283,29 @@ namespace snowflake {
309
283
return
310
284
}
311
285
for ( let i = 0 ; i < 16 ; i ++ ) {
312
- overlying ( 15 , i , neopixel . rgb ( 15 , 0 , 0 ) , true )
286
+ overlying ( 15 , i , [ 15 , 0 , 0 ] , true )
313
287
}
314
288
_np . show ( )
315
289
basic . pause ( 300 )
316
290
for ( let i = 0 ; i < 16 ; i ++ ) {
317
- overlying ( 15 , i , neopixel . rgb ( 15 , 0 , 0 ) , false )
291
+ overlying ( 15 , i , [ 15 , 0 , 0 ] , false )
318
292
}
319
293
for ( let j = 0 ; j < 3 ; j ++ ) {
320
294
for ( let i = 0 ; i < 16 ; i ++ ) {
321
295
if ( _pile [ 3 - j ] [ i ] >= _threshold )
322
- overlying ( 15 - j , i , neopixel . rgb ( 8 , 8 , 8 ) , false )
296
+ overlying ( 15 - j , i , [ 8 , 8 , 8 ] , false )
323
297
}
324
298
_np . show ( )
325
299
basic . pause ( 300 )
326
300
for ( let i = 0 ; i < 16 ; i ++ ) {
327
301
_pile [ 3 - j ] [ i ] = _pile [ 2 - j ] [ i ]
328
302
if ( _pile [ 3 - j ] [ i ] >= _threshold )
329
- overlying ( 15 - j , i , neopixel . rgb ( 8 , 8 , 8 ) , true )
303
+ overlying ( 15 - j , i , [ 8 , 8 , 8 ] , true )
330
304
}
331
305
}
332
306
for ( let i = 0 ; i < 16 ; i ++ )
333
307
if ( _pile [ 0 ] [ i ] >= _threshold )
334
- overlying ( 12 , i , neopixel . rgb ( 8 , 8 , 8 ) , false )
308
+ overlying ( 12 , i , [ 8 , 8 , 8 ] , false )
335
309
_pile [ 0 ] = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ]
336
310
}
337
311
}
0 commit comments