一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

拆解游戏开发中策划配置动态公式问题

时间:2015-04-17 编辑:简简单单 来源:一聚教程网


游戏开发中,策划总希望自己能配置奖励等公式,从程序这边对于这种太动态的东西是有点不太想去实现添加它;

既然有需求也要实现,从spring里剥离的SpelExpressionParser 可以很好的解决这个问题, 支持常见的 +—X/(加减乘除) 和指数计算^等

依赖 spring-expression-3.2.8.RELEASE.jar, 运行还需要 核心库 spring-core-3.2.8.RELEASE.jar
上代码:


package com.i5a6.semp.test;
 
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
 
public class TestExpress {
 
 public static void main(String[] args) {
  int num = dynamicCalOutput(2, 2, "#playerLevel^(1/2.7)*100*#num");
 
  System.out.println((Math.pow(2, (1 / 2.7)) * 100));
  System.out.println(num);
 
 }
 
 public static int dynamicCalOutput(int lev, int num, String arithmetic) {
  if (arithmetic == null || arithmetic.length() <= 0) {
   return 0;
  }
  ExpressionParser parser = new SpelExpressionParser();
  Expression expression = parser.parseExpression(arithmetic);
 
  EvaluationContext context = new StandardEvaluationContext();
  context.setVariable("playerLevel", lev);
  context.setVariable("num", num);
  return expression.getValue(context, Integer.class);
 }
}

热门栏目