我正在写一个游戏,我需要移动一个精灵。我正在绘制精灵,更新新位置,重新绘制它,并清除精灵的最后一次迭代,从而使它看起来像是在移动。
不幸的是,我无法从屏幕上清除精灵的上一次迭代。
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屏幕上。然而,绘制的精灵的前一次迭代仍然存在,导致不必要的“尾随”效果。