|
|
1.1 ! root 1: /* ! 2: * b.c - new bouncing line ! 3: */ ! 4: ! 5: #include <jerq.h> ! 6: #define N 25 ! 7: Point foo[] = { ! 8: 312, 799, ! 9: 650, 650, ! 10: 7, -11 ! 11: -5, 3, ! 12: 13, 7, ! 13: 3, 11, ! 14: }; ! 15: ! 16: main(argc, argv) ! 17: char *argv[]; ! 18: { ! 19: register i = 0, j; ! 20: Point from[N], to[N]; ! 21: Point dfrom, dto; ! 22: request(KBD); ! 23: initdisplay(argc, argv); ! 24: rectf(&display, Drect, F_XOR); ! 25: for(j=0; j<N; j++){ ! 26: from[j] = Drect.origin; ! 27: to[j] = Drect.origin; ! 28: } ! 29: /* from[0] = foo[0]; ! 30: from[1] = foo[0]; ! 31: to[0] = foo[1]; ! 32: to[1] = foo[1];*/ ! 33: dfrom = foo[2]; ! 34: dto = foo[3]; ! 35: for (; kbdchar()==-1; wait(CPU)){ ! 36: j = i; ! 37: if (++i >= N) ! 38: i = 0; ! 39: segment(&display, from[i], to[i], F_XOR); ! 40: from[i] = from[j]; ! 41: bump(&from[i], &dfrom); ! 42: to[i] = to[j]; ! 43: bump(&to[i], &dto); ! 44: segment(&display, from[i], to[i], F_XOR); ! 45: } ! 46: exit(); ! 47: } ! 48: ! 49: bump(p,dp) ! 50: register Point *p, *dp; ! 51: { ! 52: if ((p->x += dp->x) > Drect.corner.x || p->x < Drect.origin.x) { ! 53: dp->x = -dp->x; ! 54: p->x += dp->x << 1; ! 55: } ! 56: if ((p->y += dp->y) > Drect.corner.y || p->y < Drect.origin.y) { ! 57: dp->y = -dp->y; ! 58: p->y += dp->y << 1; ! 59: } ! 60: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.