#define CIRCLE_NUM 8
typedef struct
{
u8 r; //半径
u8 x0; //当前位置
u8 y0;
s8 x1; //当前方向
s8 y1;
u8 speed; //速度
u8 time;
}RUN_CIRCLE_DEF;//运动的圆
RUN_CIRCLE_DEF circle[CIRCLE_NUM];
void run (RUN_CIRCLE_DEF * ptr) //圆圈运动
{
if(++ptr->time < ptr->speed)return;
ptr->time = 0;
Bresenhamcircle(ptr->x0,ptr->y0,ptr->r,0); //擦除上一个位置
ptr->x0 += ptr->x1;
ptr->y0 += ptr->y1;
if(((ptr->x0 + ptr->r) >= 128) || (ptr->x0 < ptr->r))
{
ptr->x0 -= ptr->x1;
ptr->x1 = -ptr->x1;
}
else if(((ptr->y0 + ptr->r) >= 64) || (ptr->y0 < ptr->r))
{
ptr->y0 -= ptr->y1;
ptr->y1 = -ptr->y1;
}
Bresenhamcircle(ptr->x0,ptr->y0,ptr->r,1); //重画下一个位置
}
|
模仿自Windows的屏保和滚动条