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

        }

现在,问题是,如何将获得的 exp 传递给具有 get 和 set 方法的玩家类?exp 是在 Train 类中计算/生成的,但我需要将它传递给 Player,以便我可以使用 .set/.get 并在我的 Main 类中显示更新的信息。

将添加:

Player player = new Player(name,1,1,1) 进入 Train 类只需创建一个 Player 的 NEW 对象,所以我将有两个,并将 exp 分配给 Train() 中的玩家,但将一个留在 Main()独自的。

非常感谢您的帮助。

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 对象会使另一个不受影响。您可以做的是Player在您的Train类中添加对 a 的引用,并在您的构造函数中分配它。例如

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

然后您可以调用player.method()train 类,它会更新Player您传递给构造函数的内容。

因此,当您创建 的实例时Train,将Player您已经创建的实例传递给它,它将根据 Train 中发生的情况更新播放器。

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