【发布时间】:2013-10-15 23:14:07
【问题描述】:
我有一个 java 游戏,我已经做了一段时间了,现在我想改造我的调试系统。
此时您按下波浪号键,然后输入一系列命令: 治疗、弹药等。我后来为僵尸敌人添加了生成命令。 命令如下。 ~spawn.zombie.100(x-coord).100(y-coord)。 以下代码运行将命令拆分为生成参数。
public void cheat(String code) {
String[] tokens = code.substring(1).toLowerCase().split("\\.");
switch (tokens[0]) {
case "spawn":
switch (tokens[1]) {
case "zombie":
game.cubes.add(new EnemyZombie(game, Integer
.parseInt(tokens[2]), Integer.parseInt(tokens[2])));
break;
case "health":
game.cubes.add(new PowerUpHealth(game, Integer
.parseInt(tokens[2]), Integer.parseInt(tokens[2])));
break;
}
break;
default:
break;
}
game.start();
}
如何实现类似于 Java 的语法?我希望能够打字 僵尸.spawn().setX(100).setY(100).setHealth(1) 并传递这些参数。
【问题讨论】:
-
只使用Java。然后使用现有的工具。查看类似BeanShell 的东西,它可以“直接运行 Java 的小型 sn-ps”。或者嵌入任何其他数量的具有评估支持和“类似语法”的现有运行时(例如 Groovey 或 Scala)。或者创建一个词法分析器/解析器,并在支持“构建器模式”的类型之间使用反射。后一个建议不是我会做的,因为它涉及更多的工作。