- #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); //重画下一个位置
- }
|