免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5221 | 回复: 10
打印 上一主题 下一主题

[原创]仿QQ等级显示函数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-11 14:55 |只看该作者 |倒序浏览
开头先引述下QQ等级的算法:
设当前等级为N,达到当前等级最少需要的活跃天数为D,当前活跃天数为Dc,升级剩余天数为Dr,则:

从而推出:

好了,引述完成,懒得写字了,贴出代码:

  1. <?php
  2. /**
  3. *
  4. * QQ等级输出类库
  5. * @author 毛毛虫 <[email]wangchong1985@gmail.com[/email]>
  6. * @version 1.0 2008-04-09
  7. *
  8. */
  9. class showRank {
  10.        
  11.         /**
  12.          * 第一级图片显示字段
  13.          */
  14.         public $mImage1;
  15.        
  16.         /**
  17.          * 第二级图片显示字段
  18.          */
  19.         public $mImage2;
  20.        
  21.         /**
  22.          * 第三级图片显示字段
  23.          */
  24.         public $mImage3;

  25.         /**
  26.          * 构造函数:传入图片值
  27.          * @return 无
  28.          */
  29.         function __construct($pImage1 = '★',$pImage2 = '▲',$pImage3 = '●') {
  30.                 $this->mImage1 = $pImage1;
  31.                 $this->mImage2 = $pImage2;
  32.                 $this->mImage3 = $pImage3;
  33.         }
  34.        
  35.         /**
  36.          * 根据活跃天数计算用户等级。(模仿QQ的升级方式)
  37.          * @return int
  38.          * @access public
  39.          */
  40.         function get_rank($pScore) {
  41.                 $temp = $pScore+4;
  42.                 $tRank = sqrt($temp)-2;
  43.                 $tRank = floor($tRank);
  44.                 return $tRank;
  45.         }
  46.        
  47.         /**
  48.          * 用户等级标志,根据用户等级显示用户标志
  49.          * 仿照QQ等级的四进制显示
  50.          * @return str
  51.          * @access public
  52.          */
  53.         function get_score($pScore) {
  54.                 $str = '';
  55.                 $tRank = $this->get_rank($pScore);//根据分数取得等级
  56.                 $tPicNum = base_convert($tRank,10,4);//转化为四进制
  57.                 $tPicNum = strrev($tPicNum);//翻转字符串
  58.                 $tArray = str_split($tPicNum);//转化为数组
  59.                 $tNum = count($tArray);
  60.                 if($tNum<=3) {
  61.                         for($i=$tNum-1;$i>=0;$i--){
  62.                                 switch($i){
  63.                                         case '0':
  64.                                                 for($j=0;$j<$tArray[$i];$j++){
  65.                                                         $str .= $this->mImage1;
  66.                                                 }
  67.                                         break;
  68.                                         case '1':
  69.                                                 for($j=0;$j<$tArray[$i];$j++){
  70.                                                         $str .= $this->mImage2;
  71.                                                 }
  72.                                         break;
  73.                                         case '2':
  74.                                                 for($j=0;$j<$tArray[$i];$j++){
  75.                                                         $str .= $this->mImage3;
  76.                                                 }
  77.                                         break;
  78.                                         default:
  79.                                                 //$str = ;
  80.                                         break;
  81.                                 }
  82.                         }
  83.                 }else {
  84.                         $str =         $this->mImage3.$this->mImage3.$this->mImage3.$this->mImage3;
  85.                 }
  86.                 return $str;

  87.         }

  88. }
  89. ?>
复制代码

以上就是显示类,再来个简单的调用实例:

  1. <?php
  2. require_once('showRank.php');
  3. //定义等级图片
  4. $tImage1 = '<img src="images/time_star.gif">';
  5. $tImage2 = '<img src="images/time_yueliang.gif">';
  6. $tImage3 = '<img src="images/time_sun.gif">';
  7. //实例化并传输等级图片
  8. $tShow = new showRank($tImage1,$tImage2,$tImage3);
  9. //输入的活跃天数
  10. $tScore = 1009;
  11. $echo = $tShow->get_score($tScore);
  12. //输出显示效果
  13. print '<div align=center>'.$echo.'</div>';
  14. ?>
复制代码


本文到此接受,呵呵,提供程序打包下载,包括使用的太阳,月亮,星星图标:

演示地址:http://www.wangchong.org/lab/showrank/
下载地址:http://www.wangchong.org/wp-content/uploads/2008/04/showrank.rar

论坛徽章:
0
2 [报告]
发表于 2008-04-14 23:41 |只看该作者
潜水王也发原创帖,不错,好好看看。

论坛徽章:
0
3 [报告]
发表于 2008-04-14 23:47 |只看该作者
支持下毛毛虫,其实我是想得乔哥的奖品的,哈哈

论坛徽章:
0
4 [报告]
发表于 2008-04-14 23:52 |只看该作者

回复 #3 wuwei517200 的帖子

彻底无语。。。。。

论坛徽章:
0
5 [报告]
发表于 2008-04-15 12:34 |只看该作者
:
原帖由 hotbone 于 2008-4-14 23:41 发表
潜水王也发原创帖,不错,好好看看。


鼓励一下,

论坛徽章:
0
6 [报告]
发表于 2008-04-15 15:34 |只看该作者
qq的等级 累加 算法和4进制类似?

论坛徽章:
0
7 [报告]
发表于 2008-04-15 20:00 |只看该作者

回复 #6 [TK.]_sktic 的帖子

四进制只是在星星、太阳、月亮的进制上。。。他们是四进制的。。。

论坛徽章:
0
8 [报告]
发表于 2008-04-15 21:17 |只看该作者
嗯.友情顶贴.

论坛徽章:
0
9 [报告]
发表于 2008-04-17 13:41 |只看该作者
hoho~~ 帮王虫顶一下~ :wink:

论坛徽章:
0
10 [报告]
发表于 2008-04-18 12:01 |只看该作者

回复 #9 yabaxx 的帖子

都跑CU来了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP