/* http://www.mrwadlo.com */ #include #include #include #include #define MAXPPL 5000 int right[MAXPPL][2]; int left[MAXPPL][2]; int total_l = 23; int total_r = 23; void initialize(); void display(); void cycle(); void addleft(int y); void addright(int y); int checkleft(int x, int y); int checkright(int x, int y); int main() { initialize(); display(); do { cycle(); } while ( 1 ); getch(); return 0; } void initialize() { int i; clrscr(); for ( i=0 ; i<23 ; i++ ) { right[i][0] = 79; right[i][1] = i+2; } for ( i=0 ; i<23 ; i++ ) { left[i][0] = 2; left[i][1] = i+2; } for ( i=23 ; i 78 && left[i][0] != -1 ) { left[i][0] = 2; if ( left[i][1] < 24 && checkleft(2, left[i][1]+1) ) addleft(left[i][1]+1); if (left[i][1] > 2 && checkleft(2, left[i][1]-1) ) left[i][1]--; } else if ( left[i][0] != -1 ) { if ( lhit(left[i][0],left[i][1],i) ) ; else left[i][0]++; } } } for ( i=0 ; i 2 && checkright(79, right[i][1]-1) ) right[i][1]--; } else if ( right[i][0] != -1 ) { if ( rhit(right[i][0],right[i][1],i) ) ; else right[i][0]--; } } } display(); } int random() { int rnd; rnd = (rand() + time(NULL)) % 2; return rnd; } void addleft(int y) { int i=0; while ( left[i][0] != -1 ) i++; if ( i -1 ; i++ ) { if ( right[i][0] == x && right[i][1] == y && right[i][0] != -1 ) { if ( random() ) { right[i][0] = -1; right[i][1] = -1; total_r--; } else { left[n][0] = -1; left[n][1] = -1; hits = 1; total_l--; } } } return hits; } int rhit( int x, int y ) { int i; int hits = 0; for ( i=0 ; i -1 ; i++ ) { if ( left[i][0] == x && left[i][1] == y && left[i][0] != -1 ) { if ( random() ) { left[i][0] = -1; left[i][1] = -1; total_l--; } else { right[i][0] = -1; right[i][0] = -1; hits = 1; total_r--; } } } return hits; } int checkleft(int x, int y) { int i; for ( i=0 ; i