void tick(void) { int i; for (i = 0; i < MAX_PLANES; i++) if (planes[i].speed != 0.0) tick_per_plane(i); }
void add_plane(void) { int i; for (i = 0; i < MAX_PLANES; i++) if (planes[i].speed == 0) { #define SET_COLOR(r,g,b) \ planes[i].red=r; planes[i].green=g; planes[i].blue=b; break; switch (random() % 6) { case 0: SET_COLOR(1.0, 0.0, 0.0); /* red */ case 1: SET_COLOR(1.0, 1.0, 1.0); /* white */ case 2: SET_COLOR(0.0, 1.0, 0.0); /* green */ case 3: SET_COLOR(1.0, 0.0, 1.0); /* magenta */ case 4: SET_COLOR(1.0, 1.0, 0.0); /* yellow */ case 5: SET_COLOR(0.0, 1.0, 1.0); /* cyan */ } planes[i].speed = (random() % 20) * 0.001 + 0.02; if (random() & 0x1) planes[i].speed *= -1; planes[i].theta = ((float) (random() % 257)) * 0.1111; tick_per_plane(i); if (!moving) draw(glxarea); return; } XBell(dpy, 100); /* can't add any more planes */ }
void add_plane(void) { int i; for (i = 0; i < MAX_PLANES; i++) if (planes[i].speed == 0) { #define SET_COLOR(r,g,b) \ planes[i].red=r; planes[i].green=g; planes[i].blue=b; switch (random() % 6) { case 0: SET_COLOR(1.0, 0.0, 0.0); /* red */ break; case 1: SET_COLOR(1.0, 1.0, 1.0); /* white */ break; case 2: SET_COLOR(0.0, 1.0, 0.0); /* green */ break; case 3: SET_COLOR(1.0, 0.0, 1.0); /* magenta */ break; case 4: SET_COLOR(1.0, 1.0, 0.0); /* yellow */ break; case 5: SET_COLOR(0.0, 1.0, 1.0); /* cyan */ break; } planes[i].speed = ((float) (random() % 20)) * 0.001 + 0.02; if (random() & 0x1) planes[i].speed *= -1; planes[i].theta = ((float) (random() % 257)) * 0.1111; tick_per_plane(i); if (!moving) glutPostRedisplay(); return; } }