浏览 1873 次
锁定老帖子 主题:网易的积分规则的算法
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-07-10
最后修改:2009-07-11
网站要实现实现QQ那样的升级,即一级一颗星星,四级一个月亮,4个月亮(16级)一个太阳。若是单纯固定的每一级对应多少积分,则很容易就会达到4个太阳。发现网易的积分制度很有趣,不是单纯的固定多少分升级,而是级别愈高,升级愈难,用Excel分析后,得到了一些公式:每一级别都比上一级多7X,X初始值是4,每高一级,自增2,如图:
public class CountUserGrade { final static int INCREMENT = 2; final static int PARAMETER = 4; final static String CLASS_Z = "<img border='0' src='/common/style/images/class0.png' width='16' height='16'>"; final static String CLASS_A = "<img border='0' src='/common/style/images/class1.png' width='16' height='16'>"; final static String CLASS_B = "<img border='0' src='/common/style/images/class2.png' width='16' height='16'>"; final static String CLASS_C = "<img border='0' src='/common/style/images/class3.png' width='16' height='16'>"; final static String CLASS_D = "<img border='0' src='/common/style/images/class4.png' width='16' height='16'>"; /** * 根据用户的参考积分(荣誉值)计算用户等级 * */ public static int countgrade(int glory) { int grade = 0; int k = 0; int j = INCREMENT; for(grade = 0; grade < 65; grade++){ j += INCREMENT; k = k + PARAMETER * j; if(k > glory) break; } return grade; } /** * 根据用户的等级显示图片 * */ public static String setpic(String grade) { String pic = ""; int g = Integer.parseInt(grade); if(g >= 64){ pic = CLASS_D; return pic; } if(g <= 0){ pic = CLASS_Z; return pic; } int c = g / 16; if(c > 0) { for(int i = 0; i < c; i++) { pic = pic + CLASS_C; } } int bg = g % 16; int b = bg / 4; if(b > 0) { for(int i = 0; i < b; i++) { pic = pic + CLASS_B; } } int a = g % 4; if(a > 0) { for(int i = 0; i < a; i++) { pic = pic + CLASS_A; } } return pic; } }
说明:1.这里的积分是参考积分(荣誉值),参考积分与积分一块儿增加,当发生扣积分的情况时,参考积分并不扣除,它将作为级别的计算参照。 2.我这里的步进(INCREMENT)为2,倍数(PARAMETER)为4,一个太阳等于4个月亮,一个月亮等于4个星星;0级为灰色的星星,最大级别为64,超过64级用另一种图标标识,类似JE的“资深会员”。 3.附件的excel里面有推算公式,关于“步进”、“倍数”表格里有解释。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |