d->active = 0;
else {
hit = pixel_collides(d->x, d->y);
- if(hit && hit->type != SHIP) {
+ if(hit) if(hit->type != SHIP) {
d->active = 0;
mass = sprite_mass(hit);
- hit->dx += DOT_MASS_UNIT * d->mass * d->dx / mass;
- hit->dy += DOT_MASS_UNIT * d->mass * d->dy / mass;
+ hit->dx += DOT_MASS_UNIT * d->mass * (d->dx - hit->dx) / mass;
+ hit->dy += DOT_MASS_UNIT * d->mass * (d->dy - hit->dy) / mass;
}
}
}
for(;;) {
ms_frame = SDL_GetTicks() - ms_end;
ms_end += ms_frame;
- if(ms_frame > 1000) {
- ms_frame = 1000;
+ if(ms_frame > 100) {
+ ms_frame = 100;
}
t_frame = gamespeed * ms_frame / 50;
frames++;
frames = 0;
gameloop();
end = SDL_GetTicks();
- // printf("%ld frames in %ld ms, %.2f fps.\n", frames, end-start, frames * 1000.0 / (end-start));
+ printf("%ld frames in %ld ms, %.2f fps.\n", frames, end-start, frames * 1000.0 / (end-start));
return 0;
}