zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    《父亲写的散文诗》--许飞
    python 解数独
    github key already in use
    openwrt ddns绑定域名
    hexo 长期后台运行
    修复云服务器rpm无法使用的问题
    vim 取消筛选高亮
    力扣 2021.02.25 最长公共前缀
    [模板]-Manacher
    背包问题回顾
  • 原文地址:https://www.cnblogs.com/DxinSir/p/7417034.html
Copyright © 2011-2022 走看看