• QQ等级算法


    开头先引述下qq等级的算法:

    设当前等级为n,达到当前等级最少需要的活跃天数为d,当前活跃天数为dc,升级剩余天数为dr。

    代码:

    <?php
    
    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 '2':
                            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>';
    ?>

    原文地址:http://lixiangfeng.com/blog/article/content/7836228

  • 相关阅读:
    Java Stream 去重对象
    CentOS7安装JDK8
    CentOS7安装Tomcat9
    MySQL 8.0 安装
    面相对象7大原则
    Spring Boot MyBatis连接MySQL数据库
    win11右键改回win10风格,win10右键改回win11风格,不用重启
    【转载】NetCore 开发实战(目录整理)
    viewState cookie session _VIEWSTATE
    外部JS得到客户端ID
  • 原文地址:https://www.cnblogs.com/DxinSir/p/7417034.html
Copyright © 2020-2023  润新知