头一段时间想在机顶盒里加一个简单的屏保程序,想起来win下有一个小球在画面上弹来弹去的屏保…… 于是就想些一个这样的屏保程序,在网上搜了一把也没找到,就自己写了,开始的思路是写一个通用的y=k*x的函数,这个小**就按照函数弹,但是那一个麻烦阿,后来的思路转变写成了下面的模样…事实证明开始的时候是自己把问题复杂化。 函数不包含图片的刷新函数,这个可以根据自己的环境写,修改x,y的步进调整线的斜率,修改初始坐标,也可以随即化,主要是写的屏保的小算法……
俺小虾米班门弄斧了哈哈………… 很多电视机也有这样的屏保,因为是盒子里面的程序不能模拟就不能传图片了……
大家有什么好的算法上传俩,这玩意这费了我N多脑细胞…………晕
目标:实现一个**在桌面内随机直线行走碰见边缘反弹
#define **_DIAPLMENT 64 //每次位移的像素 #define SCREENSAVE_WIDTH 640 //大屏幕的宽、高 #define SCREENSAVE_HIGH 480 #define **_WIDTH 190 //**的宽、高 #define **_HIGH 80
void screensave (){
static int pos_count_x = pos_count_y = 0;
static int x_last_state = y_last_state = 1;//初始状态
if (pos_count_x < **_DIAPLMENT) x_last_state = 1; else if (pos_count_x >= SCREENSAVE_WIDTH - **_WIDTH - **_DIAPLMENT) x_last_state = 2;
if (pos_count_y < **_DIAPLMENT) y_last_state = 1; else if (pos_count_y >= SCREENSAVE_HIGH - **_HIGH - **_DIAPLMENT) y_last_state = 2;
if (y_last_state == 1) pos_count_y += **_DIAPLMENT; else pos_count_y -= **_DIAPLMENT;
if (x_last_state == 1) pos_count_x += **_DIAPLMENT; else pos_count_x -= **_DIAPLMENT;
}
|