0

我有一个 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 的语法?我希望能够输入zombie.spawn().setX(100).setY(100).setHealth(1) 并传递这些参数。

4

2 回答 2

0

根据您的描述,这可能需要大量代码才能实现。

但是,如果您正在寻找一种像这样将方法调用链接在一起的方法,您可能需要查看构建器模式。看看这个帖子:

你什么时候会使用建造者模式?

于 2013-10-15T23:16:59.073 回答
0

您可以使用反射在运行时简单地调用方法。它看起来像这样:

this.getClass().getDeclaredMethod("myMethod").invoke(this);

当然,您也可以使用参数调用方法。但是,您需要为此编写一些解析器,并且您还需要确保以正确的顺序调用方法。要实现能够执行您上面编写的命令的系统,大约需要 30 分钟。

于 2013-10-15T23:31:23.150 回答