Hans-Gert Dahmen
15 years ago
2 changed files with 80 additions and 0 deletions
@ -0,0 +1,73 @@ |
|||
#include <inttypes.h> |
|||
#include "../config.h" |
|||
#include "../random/prng.h" |
|||
#include "../pixel.h" |
|||
#include "../util.h" |
|||
|
|||
//dots flying from left to right
|
|||
void flyingdots() |
|||
{ |
|||
uint8_t rowbuffer[NUM_ROWS], i, j; |
|||
pixel p; |
|||
|
|||
clear_screen(0); |
|||
|
|||
//set the pixels to the leftmost columns
|
|||
p.x = NUM_COLS-1; |
|||
|
|||
//clear rowbuffer
|
|||
for(i = 0; i < NUM_ROWS; i++) |
|||
{ |
|||
rowbuffer[i] = 0; |
|||
} |
|||
|
|||
//produce 200 dots
|
|||
for (i = 0; i < 200; i++) |
|||
{ |
|||
//the idea is to use a buffer for one row
|
|||
//first all pixels that are in the rowbuffer
|
|||
//will be reduced in brightness
|
|||
//(as you can assume that they were
|
|||
// drawn in the last round and need to be dimmed
|
|||
// to produce the trail effect)
|
|||
//and then a new one will be added
|
|||
//finally the rowbuffer is drawn
|
|||
|
|||
//loop through all pixels in our rowbuffer
|
|||
for(j = 0; j < NUM_ROWS; j++) |
|||
{ |
|||
//add a trail or remove the pixel, if it was bright enough
|
|||
if(rowbuffer[j] > 0) |
|||
{ |
|||
rowbuffer[j]--; |
|||
} |
|||
} |
|||
|
|||
//choose row and brightness
|
|||
p.y = random8() % NUM_ROWS; |
|||
rowbuffer[p.y] += (random8() % (NUMPLANE)) + 1; |
|||
|
|||
//cap max brightness
|
|||
if(rowbuffer[p.y] > NUMPLANE) |
|||
{ |
|||
rowbuffer[p.y] = NUMPLANE; |
|||
} |
|||
|
|||
//draw all pixels in our rowbuffer
|
|||
for(j = 0; j < NUM_ROWS; j++) |
|||
{ |
|||
if(rowbuffer[j] > 0) |
|||
{ |
|||
p.y = j; |
|||
setpixel(p, rowbuffer[j]); |
|||
} |
|||
} |
|||
|
|||
//shift the picture right
|
|||
//(yes, shift_pixmap_l shifts the picture right)
|
|||
shift_pixmap_l(); |
|||
|
|||
//wait a bit
|
|||
wait(100); |
|||
} |
|||
} |
@ -0,0 +1,7 @@ |
|||
#ifndef FLYINGDOTS_H_ |
|||
#define FLYINGDOTS_H_ |
|||
|
|||
// dots fly from left to right
|
|||
void flyingdots(); |
|||
|
|||
#endif /* FLYINGDOTS_H_ */ |
Loading…
Reference in new issue