清除精灵而不是使用clear()

时间:2015-05-16 12:22:49

标签: c graphics

我正在写一个游戏,我需要移动一个精灵。我正在绘制精灵,更新新位置,重新绘制它,并清除精灵的最后一次迭代,从而使它看起来像是在移动。

不幸的是,我无法从屏幕上清除精灵的上一次迭代。

void move_sprite() {//this is used in a while loop within the main

        get_direction();//just checks to see which direction the dx/dy should move in
        clear_sprite(sprite.x, sprite.y, width, height);//should clear the previous iteration of the sprite
        update_sprite(&sprite);//modifies the x/y dx/dy of the sprite, moving it
        draw_sprite(&sprite);//this just draws the sprite at whatever coordinate update_sprite tells it to move to, it is moving one pixel at a time.
        refresh();
        _delay_ms( 200 );

}

void clear_sprite(unsigned char x, unsigned char y, const int width, const int height) {
    for (int i = 0; i < width; i++) {
        for (int ii = 0; ii < height; ii++){
            set_pixel(x + i, y + ii, 0);
        }
    }   
}

它遍历3 x 3精灵的x和y,并将每个像素值设置为0,从而将其清除在LCD屏幕上。然而,绘制的精灵的前一次迭代仍然存在,导致不必要的“尾随”效果。

0 个答案:

没有答案