【问题标题】:How to create a debugging coding system in a java game?如何在Java游戏中创建调试编码系统?
【发布时间】: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)。或者创建一个词法分析器/解析器,并在支持“构建器模式”的类型之间使用反射。后一个建议不是我会做的,因为它涉及更多的工作。

标签: java string syntax split


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    When would you use the Builder Pattern?

    【讨论】:

    • 类似于链接方法,但我想要一个在程序运行时拆分呈现字符串的系统。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    相关资源
    最近更新 更多