Rockbox mail archive
Subject: Re: snow screensaver
From: Itai (Itais_at_newmail.net)
Date: 2002-08-29
works fine for me....
I did got that top line you mention, but that was before I added the two
last condiotions to particle_exists (to check if a particle has gone out
of the screen)
anyways, I have changed my code according to the conventions, and maybe
with shorter lines it'll work (who knows.)
bottom line - works fine for me......
Robert Hak wrote:
>I have played with this and like it.
>
>However, when run, you get a build up of pixels on the very top most line
>of the screen. (i can get you a screen shot if you like)
>
>In additions, when you write the code, please try and keep the line
>lengths under 80 chars, and avoid putting the if clause's on the same
>line:
>
>if(true) i++;
>
>should be
>
>if(true)
> i++;
>
>/Adi
>
>
>On Wed, 28 Aug 2002, Itai wrote:
>
>a screen saver (for the recorder, duh) that simulates snow/dust/small
>particles going down the screen
>
>
/*
snow screen saver
by Itai Shaked
*/
#include "lcd.h"
#include "config.h"
#include "kernel.h"
#include "menu.h"
#include "button.h"
#include <stdlib.h>
short particles[2000][2];
bool particle_exists (int particle) {
if (particles[particle][0]>=0 && particles[particle][1]>=0 &&
particles[particle][0]<=111 && particles[particle][1]<=63)
return true;
else return false;
}
int create_particle (void) {
int i;
for (i=0; i<1500; i++) {
if (!particle_exists(i)) {
particles[i][0]=(rand()%112);
particles[i][1]=0;
return i;
}
}
return -1;
}
void snow_move(void) {
int i;
if (!(rand()%2)) create_particle();
for (i=0; i<2000; i++) {
if (particle_exists(i)) {
lcd_clearpixel(particles[i][0],particles[i][1]);
switch ((rand()%5)) {
case 0:
particles[i][0]++;
break;
case 1:
particles[i][0]--;
break;
case 2:
break;
default:
particles[i][1]++;
break;
}
if (particle_exists)
lcd_drawpixel(particles[i][0],particles[i][1]);
}
}
}
void snow_init(void) {
int i;
for (i=0; i<2000; 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/10);
if (button_get(false)==BUTTON_OFF) return MENU_OK;
}
}
Page was last modified "Jan 10 2012" The Rockbox Crew
|