0

テキストベースの Java ゲームをコーディングしていますが、理解できないいくつかの問題に遭遇しました。

私のコードは次の行に沿って動作します:

        public class main() {
           run initial method for menu
           Player player = new Player(name,1,1,1);
           do{
           game code
           while(running = true)
          }

       public class Player() {
           string name
            int age
            int level
            int exp

           getName()
           setName() etc etc
          }

       public class Train() {
        kill monster
        totalExp = monsters killed

        }

さて、問題は、取得した経験値を、get メソッドと set メソッドを持つプレーヤー クラスに渡すにはどうすればよいかということです。exp は Train クラスで計算/生成されますが、.set/.get を使用して Main クラスで更新された情報を表示できるように、Exp を Player に渡す必要があります。

追加します:

Player player = new Player(name,1,1,1) を Train クラスに追加するだけで、Player の NEW オブジェクトが作成されるので、2 つになり、Exp を Train() でプレーヤーに割り当てますが、Main() には 1 つ残します。 1人。

助けてくれて本当にありがとうございます。

4

2 に答える 2

2

プレーヤーのインスタンスをTrainメソッドに渡すことがTrainできるので、そのインスタンスを直接操作できます

例えば:

public void Train(Player player) {
  kill monster
  totalExp = monsters killed
  player.setXP(player.getXP() + totalExp)
}
于 2012-06-18T20:38:49.937 に答える
2

Player の新しいオブジェクトを train に追加しても、別のオブジェクトは影響を受けないという仮定は正しいです。できることはPlayerTrainクラスに a への参照を追加し、それをコンストラクターに割り当てることです。例えば

class Train {
    Player player;
    public Train(Player p) {
        player = p;
        /* ... */
    }
    /* ... */
}

次に train クラスを呼び出すと、コンストラクターに渡したplayer.method()が更新されます。Player

したがって、 のインスタンスを作成するときに、作成済みのTrainに渡すと、PlayerTrain で発生したことに基づいてプレーヤーが更新されます。

Player p = new Player(...);
Train t = new Train(p);
于 2012-06-18T20:38:58.677 に答える