diff options
author | Björn Stenberg <bjorn@haxx.se> | 2002-09-06 22:30:10 +0000 |
---|---|---|
committer | Björn Stenberg <bjorn@haxx.se> | 2002-09-06 22:30:10 +0000 |
commit | 77904ab892b6a79950a3fc473a1104ebd9b52abd (patch) | |
tree | 23e9a41eff7e7e42c16962f8b2b9e5ec703e0949 /apps/recorder/snow.c | |
parent | 451d7f5d3755b48bd397b6586cf3c4943dc55573 (diff) | |
download | rockbox-77904ab892b6a79950a3fc473a1104ebd9b52abd.tar.gz rockbox-77904ab892b6a79950a3fc473a1104ebd9b52abd.zip |
Added snow for real.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2216 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/recorder/snow.c')
-rw-r--r-- | apps/recorder/snow.c | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/apps/recorder/snow.c b/apps/recorder/snow.c new file mode 100644 index 0000000000..4d4e5952ae --- /dev/null +++ b/apps/recorder/snow.c @@ -0,0 +1,107 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2002 Itai Shaked + * + * All files in this archive are subject to the GNU General Public License. + * See the file COPYING in the source tree root for full license agreement. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ +#include <stdlib.h> +#include "lcd.h" +#include "config.h" +#include "kernel.h" +#include "menu.h" +#include "button.h" + +#define NUM_PARTICLES 100 + +static short particles[NUM_PARTICLES][2]; + +static bool particle_exists(int particle) +{ + if (particles[particle][0]>=0 && particles[particle][1]>=0 && + particles[particle][0]<112 && particles[particle][1]<64) + return true; + else + return false; +} + +static int create_particle(void) +{ + int i; + + for (i=0; i<NUM_PARTICLES; i++) { + if (!particle_exists(i)) { + particles[i][0]=(rand()%112); + particles[i][1]=0; + return i; + } + } + return -1; +} + +static void snow_move(void) +{ + int i; + + if (!(rand()%2)) + create_particle(); + + for (i=0; i<NUM_PARTICLES; i++) { + if (particle_exists(i)) { + lcd_clearpixel(particles[i][0],particles[i][1]); + switch ((rand()%7)) { + case 0: + particles[i][0]++; + break; + + case 1: + particles[i][0]--; + break; + + case 2: + break; + + default: + particles[i][1]++; + break; + } + if (particle_exists(i)) + lcd_drawpixel(particles[i][0],particles[i][1]); + } + } +} + +static void snow_init(void) +{ + int i; + + for (i=0; i<NUM_PARTICLES; i++) { + particles[i][0]=-1; + particles[i][1]=-1; + } + lcd_clear_display(); +} + +Menu snow(void) +{ + snow_init(); + + while (1) { + snow_move(); + lcd_update(); + sleep(HZ/20); + if (button_get(false)) + return MENU_OK; + } +} |