我正在编写一个基于文本的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方法的player类? exp是在Train类中计算/生成的,但我需要将它传递给Player,这样我就可以使用.set / .get并在我的Main类中显示更新的信息。
会添加:
播放器播放器=新播放器(名称,1,1,1)进入Train类只需创建一个Player对象的新对象,所以我将有两个,并将exp分配给Train()中的播放器,但保留一个主要是()。
非常感谢你的帮助。
答案 0 :(得分:2)
您可以将播放器实例传递给Train
方法,以便Train
可以直接对该实例进行操作
E.g:
public void Train(Player player) {
kill monster
totalExp = monsters killed
player.setXP(player.getXP() + totalExp)
}
答案 1 :(得分:2)
你认为在火车上添加一个新的Player对象会让另一个没有受到影响是正确的。您可以做的是在Player
类中添加Train
的引用,并在构造函数中指定它。 E.g。
class Train {
Player player;
public Train(Player p) {
player = p;
/* ... */
}
/* ... */
}
然后,您可以在火车类中调用player.method()
,它将更新您传递给构造函数的Player
。
因此,当您创建Train
的实例时,将其传递给您已创建的Player
,它将根据列车中的内容更新播放器。
Player p = new Player(...);
Train t = new Train(p);