/* * Update the given polygon's position according to the given informations in * polygon_move (polygon_move may be updated) */ static void polygon_update(struct polygon *polygon, struct polygon_move *polygon_move) { int i, x, y, step; for(i = 0; i < NB_POINTS; ++i){ x = polygon->vx[i]; step = polygon_move->movex[i]; x += step; if(x <= 0){ x = 1; polygon_move->movex[i] = get_new_step(step); } else if(x >= ttk_screen->w){ x = ttk_screen->w - 1; polygon_move->movex[i] = get_new_step(step); } polygon->vx[i] = x; y = polygon->vy[i]; step = polygon_move->movey[i]; y += step; if(y <= 0){ y = 1; polygon_move->movey[i] = get_new_step(step); } else if(y >= ttk_screen->h){ y = ttk_screen->h - 1; polygon_move->movey[i] = get_new_step(step); } polygon->vy[i] = y; } }
void polygon_move_init(struct polygon_move * polygon_move) { int i; for(i=0; i<NB_POINTS; ++i) { polygon_move->move_steps[i].x=get_new_step(-1); /* -1 because we want a positive random step */ polygon_move->move_steps[i].y=get_new_step(-1); } }
/* * Update the given polygon's position according to the given informations in * polygon_move (polygon_move may be updated) */ void polygon_update(struct polygon *polygon, struct screen * display, struct polygon_move *polygon_move) { int i, x, y, step; for(i=0; i<NB_POINTS; ++i) { x=polygon->points[i].x; step=polygon_move->move_steps[i].x; x+=step; if(x<=0) { x=1; polygon_move->move_steps[i].x=get_new_step(step); } else if(x>=display->getwidth()) { x=display->getwidth()-1; polygon_move->move_steps[i].x=get_new_step(step); } polygon->points[i].x=x; y=polygon->points[i].y; step=polygon_move->move_steps[i].y; y+=step; if(y<=0) { y=1; polygon_move->move_steps[i].y=get_new_step(step); } else if(y>=display->getheight()) { y=display->getheight()-1; polygon_move->move_steps[i].y=get_new_step(step); } polygon->points[i].y=y; } }