zoukankan      html  css  js  c++  java
  • 活跃天数计算用户等级模仿QQ的升级方式

      QQ等级的算法:设当前等级为N,达到当前等级最少需要的活跃天数为D,当前活跃天数为Dc,升级剩余天数为Dr,则:

      从而推出:

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

      复制内容到剪贴板

      代码:

      <?php

      /**

      *

      *QQ等级输出类库

      * author毛毛虫<wangchong1985 gmail.com>

      * version 1.0 2008-04-09

      *

      */

      class showRank{

      /**

      *第一级图片显示字段

      */

      public$mImage1;

      /**

      *第二级图片显示字段

      */

      public$mImage2;

      /**

      *第三级图片显示字段

      */

      public$mImage3;

      /**

      *构造函数:传入图片值

      * return无

      */

      function __construct($pImage1='★',$pImage2='▲',$pImage3='●'){

      $this->mImage1=$pImage1;

      $this->mImage2=$pImage2;

      $this->mImage3=$pImage3;

      }

      /**

      *根据活跃天数计算用户等级。(模仿QQ的升级方式)

      * return int

      * access public

      */

      function get_rank($pScore){

      $temp=$pScore+4;

      $tRank=sqrt($temp)-2;

      $tRank=floor($tRank);

      return$tRank;

      }

      /**

      *用户等级标志,根据用户等级显示用户标志

      *仿照QQ等级的四进制显示

      * return str

      * access public

      */

      function get_score($pScore){

      $str='';

      $tRank=$this->get_rank($pScore);//根据分数取得等级

      $tPicNum=base_convert($tRank,10,4);//转化为四进制

      $tPicNum=strrev($tPicNum);//翻转字符串

      $tArray=str_split($tPicNum);//转化为数组

      $tNum=count($tArray);

      if($tNum<=3){

      for($i=$tNum-1;$i>=0;$i--){

      switch($i){

      case'0':

      for($j=0;$j<$tArray[$i];$j++){

      $str.=$this->mImage1;

      }

      break;

      case'1':

      for($j=0;$j<$tArray[$i];$j++){

      $str.=$this->mImage2;

      }

      break;

      case'2881064151':

      for($j=0;$j<$tArray[$i];$j++){

      $str.=$this->mImage3;

      }

      break;

      default:

      //$str=;

      break;

      }

      }

      }else{

      $str=$this->mImage3.$this->mImage3.$this->mImage3.$this->mImage3;

      }

      return$str;

      }

      }

      ?>

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

      复制内容到剪贴板

      代码:

      <?php

      require_once('showRank.php');

      //定义等级图片

      $tImage1='<img src="images/time_star.gif">';

      $tImage2='<img src="images/time_yueliang.gif">';

      $tImage3='<img src="images/time_sun.gif">';

      //实例化并传输等级图片

      $tShow=new showRank($tImage1,$tImage2,$tImage3);

      //输入的活跃天数

      $tScore=1009;

      $echo=$tShow->get_score($tScore);

      //输出显示效果

      print'<div align=center>'.$echo.'</div>';

      ?>

  • 相关阅读:
    上传图片并实现本地预览
    a标签传递参数
    HTTP错误 404.17–Not Found 请求的内容似乎是脚本,因而将无法有静态文件处理程序来处理
    VM虚拟机无法拖拽、粘贴、复制
    ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值
    Oracle中Clob类型处理解析:ORA-01461:仅可以插入LONG列的LONG值赋值
    Oracle获取表结构信息:表名、是否视图、字段名、类型、长度、非空、主键
    SQLServer2005,2000获取表结构:字段名、类型、长度、主键、非空、注释
    c# float和double的“坑”
    VS活动解决方案平台
  • 原文地址:https://www.cnblogs.com/cbryge/p/6030858.html
Copyright © 2011-2022 走看看