Java: 对象无法解析为变量
Java: object cannot be resolved to a variable
我的对象显然无法解析为变量...
在Game.Java中:
public static void main(String[] args) {
Slime slime = new Slime();
}
在Player.Java中:
public static void Attack() {
System.out.println("Player attacks!");
int dmg = ATTACK;
System.out.println(dmg + " damage to Slime!");
slime.HP -= dmg;
System.out.println(Player.HP);
}
那么我该如何减少史莱姆 HP 的伤害呢?我做了一些研究,这仍然没有意义。
Player.java 需要有对 slime 的引用,或者需要通过 Attack() 方法传入。实际上,第二个更有意义。
public void attack(Slime opponent) {
int dmg = ATTACK;
opponent.HP -= dmg;
}
这将允许您 "attack" 多种不同的史莱姆。
另一种方法是在播放器 class 本身中存储对粘液的引用:
public class Player {
private Slime slime;
private static final int ATTACK = 10; // or something
public void setSlime(Slime slime) {
this.slime = slime;
}
public void attack() {
int dmg = ATTACK;
slime.HP -= dmg;
}
}
实际上,除非您让 Player 以某种方式了解 Slime 实例,否则它不会影响该 Slime 实例。
我确实注意到您主要使用静态方法,但在这里我使用 class 变量和非静态方法用于 OOP 目的。
此外,Java 编码约定是方法调用的名称应为小写,这就是为什么我更喜欢 attack()
而不是 Attack()
。
我的对象显然无法解析为变量...
在Game.Java中:
public static void main(String[] args) {
Slime slime = new Slime();
}
在Player.Java中:
public static void Attack() {
System.out.println("Player attacks!");
int dmg = ATTACK;
System.out.println(dmg + " damage to Slime!");
slime.HP -= dmg;
System.out.println(Player.HP);
}
那么我该如何减少史莱姆 HP 的伤害呢?我做了一些研究,这仍然没有意义。
Player.java 需要有对 slime 的引用,或者需要通过 Attack() 方法传入。实际上,第二个更有意义。
public void attack(Slime opponent) {
int dmg = ATTACK;
opponent.HP -= dmg;
}
这将允许您 "attack" 多种不同的史莱姆。
另一种方法是在播放器 class 本身中存储对粘液的引用:
public class Player {
private Slime slime;
private static final int ATTACK = 10; // or something
public void setSlime(Slime slime) {
this.slime = slime;
}
public void attack() {
int dmg = ATTACK;
slime.HP -= dmg;
}
}
实际上,除非您让 Player 以某种方式了解 Slime 实例,否则它不会影响该 Slime 实例。
我确实注意到您主要使用静态方法,但在这里我使用 class 变量和非静态方法用于 OOP 目的。
此外,Java 编码约定是方法调用的名称应为小写,这就是为什么我更喜欢 attack()
而不是 Attack()
。