网易的积分规则的算法
网站要实现实现QQ那样的升级,即一级一颗星星,四级一个月亮,4个月亮(16级)一个太阳。若是单纯固定的每一级对应多少积分,则很容易就会达到4个太阳。发现网易的积分制度很有趣,不是单纯的固定多少分升级,而是级别愈高,升级愈难,用Excel分析后,得到了一些公式:每一级别都比上一级多7X,X初始值是4,每高一级,自增2,如图:http://www.agoit.com/upload/picture/pic/40270/769dd33d-a644-3703-ad61-7d144273c5e9.gif
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里面有推算公式,关于“步进”、“倍数”表格里有解释。
页:
[1]