http://text-share.com/view/044ca96e
所以我最近开始学习Java(没有以前的编程exp),到现在为止我已经有了一些非常基本的概念。或许不是这样,因为我刚刚开始了我的第一个现实生活计划"我似乎迷失了访问级别或类似的东西。
http://text-share.com/view/044ca96e
但要问一些具体的事情 -
(我在同一个包中有Main.java,Creature.java,Player.java,Monster.java和Room.java。)
1,我想我应该使用Player / Monster类中的构造函数创建Player / Monster对象,对吧?问题是,当我这样做时,我无法在main中访问这些对象或它们的方法吗?
2,我不能在Monster类中使用player1.getHp或Player类中的任何方法。
我怀疑我的课程中存在一些结构性问题,但无法弄清楚它是什么。这可能是到目前为止2018年的最新问题,但我将不胜感激。 :)
提前致谢。
答案 0 :(得分:1)
您必须了解对象的范围。仅仅因为您在Main类中创建了Player和Room,并不意味着默认情况下这些类的实例可以相互访问。例如,在Room中,您尝试使用player1,但Room中没有任何内容可以接收Player参数。 您必须在Room内创建一个Player实例或将其传入。因此,构造函数或setter必须在Room类中设置播放器以使其工作。
所以,在Main中,你会有像
这样的东西Player player = new Player();
Room room = new Room(player);
在Room中,你有一个构造函数可以设置的本地Player变量。
答案 1 :(得分:0)
在各自的.java文件中声明你的怪物,生物等,然后在Main.java中你可以创建 对象 :
Monster mon = new Monster(); //default constructor
Creature cre = new Creature(); // ditto
然后,您可以在Main.java中访问mon.variable
或调用方法mon.method()
等。
我认为你会感到困惑。
您希望Creature
,Monster
,Player
能够在Room
中与您进行互动(?)
现在,如果Monster杀死了Creature并在此过程中获取了所有健康点,那么main.java中的代码将如下所示。
mon.health = mon.health + cre.health;
cre.health = 0; //i.e dead
还有一些与你思考方式有关的事情" main"但现在已经足够了。
答案 2 :(得分:0)
我认为你(在概念上)试图将怪物,生物,玩家置于室内。我明白了。但是,您的类 - Room - 只是Main中的另一个对象(如果您实例化它)。
在任何oo语言的眼中,房间,生物,玩家都只是物体;尽管你(从概念上)认为生物是在怪物的房间内。程序中没有像你脑中那样的等级。
此外,您在这里使用“package”和“public”这两个词,好像它们可能是问题所在,从而揭示了一个解决方案:它们不会。
你可以观看一个非常好的关于Java编程的youtube教程,这将需要2-3个小时的时间。或者 - 你可以继续劈砍东西,永远做对不对。多年来,我自己一直为自己的成本而感到内疚。
如果你做观看教程,那么我恳请你不要跳过那些烦人的事。这一切都很重要。否则它就不存在了。考虑到你要做的事情,我会特别注意一些叫做“静态”的东西。