Пример #1
0
/*
 * 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;
    }
}
Пример #2
0
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);
    }
}
Пример #3
0
/*
 * 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;
    }
}