#include #include #include #include #include #include #include "graph.h" void gravity(ball & sp1, ball & sp2); int main(int argc, char **argv) { char c; int x = 0, y = 0; int maxballs = 100, vis = 2, test = 0; ball sp[maxballs]; int color = 0x222222; maxx = 1920; maxy = 1100; seconds = time (NULL); unsigned int sec = seconds; srand(sec); double mass = 0; scale = .15; for(x = 0; x < maxballs; x++){ sp[x].id = x; sp[x].init(); mass += sp[x].m; } sp[0].x = maxx / 2; sp[0].y = maxy / 2; sp[0].r = 100; sp[0].m = sp[0].r * sp[0].r * sp[0].r * sp[0].r; sp[0].vx = 0; sp[0].vy = 0; init_screen(maxx, maxy); double dx, dy, dist, rad; while(1){ //if(sp[0].control < 3 || sp[0].control > 6){ ColorFill(color, maxx, maxy); //} for(x = 0; x < vis; x++){ sp[x].move(); if(x > 0){ gravity(sp[x], sp[0]); } sp[x].show(); } for(x = 0; x < vis; x++){ sp[x].showvec(); for(y = x + 1; y < vis; y++) { sp[y].bump(sp[x]); if(test == 1){ linexy(sp[y].x, sp[y].y, sp[x].x, sp[x].y, 0xffffff); } if(test == 2){ dx = sp[x].x - sp[y].x; dy = sp[x].y - sp[y].y; linevxy(sp[x].x, sp[x].y, dx, dy, 0xff0000); } if(test == 3){ dx = sp[x].x - sp[y].x; dy = sp[x].y - sp[y].y; dist = sqrt(dx * dx + dy * dy); getrad(dx, dy, rad); linerad(sp[x].x, sp[x].y, rad, dist, 0x00ff00); } if(test == 4 && vis < maxballs){ linexy(sp[vis].x, sp[vis].y, sp[vis - 1].x, sp[vis - 1].y, 0x0000ff); } } } SDL_Delay(1); c = keystroke(); if(c == 'm' && vis < maxballs){ vis ++; } if(c == 'l' && vis > 1){ vis --; } if(c == 'q'){ break; } if(c == 't'){ test++; if(test == 5) test = 0; } if(c == 'c'){ color = rand() % 0xffffff; } if(c == 'v'){ sp[0].vx *= 2; sp[0].vy *= 2; } if(c == 'g'){ for(x = 0; x < maxballs; x ++) sp[x].control ++; } if(c == 'r'){ for(x = 0; x < maxballs; x ++) sp[x].control = 0; } if(c == 's'){ for(x = 0; x < vis; x ++){ if(sp[x].x > maxx && sp[x].vx > 0){ sp[x].vx = 0; } if(sp[x].x < 0 && sp[x].vx < 0){ sp[x].vx = 0; } if(sp[x].y < 0 && sp[x].vy < 0){ sp[x].vy = 0; } if(sp[x].y > maxy && sp[x].vy > 0){ sp[x].vy = 0; } } } if(c == 'a'){ sp[vis].vy *= 1.001; } if(c == 'd'){ sp[vis].vy *= .999; } SDL_UpdateRect(screen, minx, miny, maxx, maxy); } }