welcome to xlongwei.com

欢迎大家一起学习、交流、分享


QQ:9167702333 邮箱:admin@xlongwei.com

LevelUtil用户等级计算代码


分类 Java   关键字 分享   标签 java   algorithm   发布 hongwei  1438586060909
注意 转载须保留原文链接,译文链接,作者译者等信息。  
等级计算规则:
1,根据活跃天数计算等级,用户前台登录可以累积活跃天数1天
2,1-5天为1级,5-12天为2级,依次9、11、13、15天增加一个等级
3,等级公式:D=N^2+4*N,N=ceil((sqrt(D+4)-2),验证:365天=18级
Double.valueOf(floor(sqrt(activeDays+4)-2)).intValue()  
4,4星星=1月亮,4月亮=1太阳,4太阳=1皇冠;星星是1级,月亮是4级,太阳是16级,皇冠是64级(4352天约11年);
5,日月星计算公式:按4进制取模计算
int stars = level % 4;
int moons = (level = level/4) % 4;
int suns = (level = level/4) % 4;
int crowns = (level = level/4) % 4;
return new int[] {crowns, suns, moons, stars};

public class LevelUtil {
	/** L=sqrt(D+4)-2,再向上取整,activeDays不能为负数 */
	public static int getLevel(double activeDays) {
		return Double.valueOf(floor(sqrt(activeDays+4)-2)).intValue();
	}
	/** D=L*L+4*L,计算级别对应的活跃天数区间,[start, end] */
	public static int[] getDays(int level) {
		int start = level*(level+4);
		int end = start+2*level+4;
		return new int[] {start, end};
	}
	/** 计算日月星及皇冠数量,[crowns, suns, moons, stars] */
	public static int[] getStars(int level) {
		int stars = level % 4;
		int moons = (level = level/4) % 4;
		int suns = (level = level/4) % 4;
		int crowns = (level = level/4) % 4;
		return new int[] {crowns, suns, moons, stars};
	}
}