0

しばらく取り組んできた Java ゲームがあり、デバッグ システムを刷新したいと考えています。

この時点で、チルダ キーを押してから、さまざまなコマンドを入力します: ヒール、弾薬など。後でゾンビの敵のスポーン コマンドを追加しました。コマンドは次のとおりです。~spawn.zombie.100(x座標).100(y座標). 次のコードが実行され、コマンドがスポーン用のパラメーターに分割されます。

        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

リフレクションを使用して、実行時にメソッドを簡単に呼び出すことができます。次のようになります。

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

もちろん、パラメーターを指定してメソッドを呼び出すこともできます。ただし、そのためのパーサーを作成する必要があり、メソッドを正しい順序で呼び出していることを確認する必要もあります。上記のコマンドを実行できるシステムを実装するには、約 30 分かかります。

于 2013-10-15T23:31:23.150 に答える
0

あなたの説明に基づいて、実装するにはかなりの量のコードが必要になるでしょう。

ただし、そのようにメソッド呼び出しを連鎖させる方法を探している場合は、ビルダー パターンを確認することをお勧めします。この投稿をチェックしてください:

Builder パターンはいつ使用しますか?

于 2013-10-15T23:16:59.073 に答える