#!/usr/local/bin/cz -- struct ball num x, y, r num o, s, v, af num vx, vy ball_init(ball *b) b->r = Rand(0.1, 0.2)*360 b->x = Rand(-w_2+b->r, w_2-b->r) ; b->y = Rand(-h_2+b->r, h_2-b->r) b->o = Rand(360) ; b->s = Rand(0.5, 1) ; b->v = Rand(0, 0.5) b->af = Rand() b->vx = Rand(-12, 12) ; b->vy = Rand(-12, 12) Main() space() int n = 5 getargs(int, n) new(v, vec, ball, n) repeat(n) ball *b = vec_push(v) init(b, ball) repeat clear() for_vec(b, v, ball) if Rand() < 0.005 init(b, ball) black() num f = b->r/360.0 disc(b->x, b->y, 380*f) back(a, 360, 0, 5/f) hsv(a*b->af+b->o, b->s, b->v) disc(b->x, b->y, a*f) b->x += b->vx ; b->y += b->vy bounce(b->x, b->vx, -w_2+b->r, <, 1) bounce(b->x, b->vx, w_2-b->r, >, 1) bounce(b->y, b->vy, -h_2+b->r, <, 1) bounce(b->y, b->vy, h_2-b->r, >, 1) b->vy -= 0.5 # b->s *= 0.98 # b->v *= 0.98 # csleep(1.0/100) Paint() use b