| 
 
| 头一段时间想在机顶盒里加一个简单的屏保程序,想起来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;
 
 }
 
 | 
 |