动态公式
拆解游戏开发中策划配置动态公式问题
星期一, 四月 13th, 2015 | JAVA-and-J2EE, 游戏开发 | 没有评论
游戏开发中,策划总希望自己能配置奖励等公式,从程序这边对于这种太动态的东西是有点不太想去实现添加它;
既然有需求也要实现,从spring里剥离的SpelExpressionParser 可以很好的解决这个问题, 支持常见的 +—X/(加减乘除) 和指数计算^等
依赖 spring-expression-3.2.8.RELEASE.jar, 运行还需要 核心库 spring-core-3.2.8.RELEASE.jar
上代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 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); } } |
Search
相关文章
热门文章
最新文章
文章分类
- ajax (10)
- algorithm-learn (3)
- Android (6)
- as (3)
- computer (85)
- Database (30)
- disucz (4)
- enterprise (1)
- erlang (2)
- flash (5)
- golang (3)
- html5 (18)
- ios (4)
- JAVA-and-J2EE (186)
- linux (143)
- mac (10)
- movie-music (11)
- pagemaker (36)
- php (50)
- spring-boot (2)
- Synology群晖 (2)
- Uncategorized (6)
- unity (1)
- webgame (15)
- wordpress (33)
- work-other (2)
- 低代码 (1)
- 体味生活 (40)
- 前端 (21)
- 大数据 (8)
- 游戏开发 (9)
- 爱上海 (19)
- 读书 (4)
- 软件 (3)