[英]How do I change a variable in one java class from another, then access that changed variable from a third java class?
[英]How do I access and update a variable form another java class?
我正在尝试访问我在“怪物”class 中初始化的变量“hp”,但没有任何效果。 我尝试使用 setter,但没有用。
Monster
class:
public class Monster{
private String name, type;
private int hp, speed, attack, defense;
private Move move1, move2, move3, move4;
public Monster(String name, String type, int hp, int speed, int attack, int defense, Move move1, Move move2, Move move3, Move move4) {
this.name = name;
this.type = type;
this.hp = hp;
this.speed = speed;
this.attack = attack;
this.defense = defense;
this.move1 = move1;
this.move2 = move2;
this.move3 = move3;
this.move4 = move4;
}
以下代码是另一个 class 的一部分,我在其中尝试访问hp
并更新其值:
damage = getMonster().getAttack() + movePower - pl.getMonster().getDefense();
int currentHP = getMonster().getHP();
int updatedHP = currentHP - damage;
hp.setHP(updatedHP);
这就是我试图访问和修改它的方式。 请帮忙。
您将无法在Monster
class 之外更新该实例变量hp
。您使用.setHP()
的想法不起作用,因为您没有在Monster
object 上使用该方法。如果此示例中的Monster
被称为p1
,你应该这样做:
int updatedHP = p1.getHP() - damage;
p1.setHP(updatedHP);
假设您想保留updatedHP
变量,并且在Monster
class 中有一个有效的 getHP() 方法,即。
您的代码不清楚,因为有一堆变量没有包含类型(hp 和 p1),但我相信您正在尝试做的是这个 -
damage = getMonster().getAttack() + movePower - pl.getMonster().getDefense();
int currentHP = getMonster().getHP();
int updatedHP = currentHP - damage;
getMonster().setHP(updatedHP);
您需要在 Monster class 中定义 setter 并在实例化 Monster object 后使用它。(为简单起见删除移动)
public class Monster {
private String name, type;
private int hp, speed, attack, defense;
public Monster(String name, String type, int hp, int speed, int attack, int defense) {
this.name = name;
this.type = type;
this.hp = hp;
this.speed = speed;
this.attack = attack;
this.defense = defense;
}
public int getHp() {
return this.hp;
}
public void setHp(int num) {
this.hp = num;
}
}
import Monster.java;
public class Hello {
public static void main(String[] args) {
Monster m = new Monster("name1", "type1", 20, 1, 2, 3);
m.setHp(200);
System.out.println(m.getHp());
}
}
我想到了。 我所要做的就是在 Player class 中将 monster 变量设置为 public,然后我使用点运算符访问和更新 hp 变量。 感谢您的帮助!
假设我们有一个 Monster 并且我们计算了一些伤害:
Monster monster = getMonster();
int damage = calculateDamage();
我们可以计算 HP,然后将其分配回 Monster:
int remainingHp = monster.getHp() - damage;
monster.setHp(remainingHp);
这可以简化为:
monster.setHp(monster.getHp() - damage);
请注意,没有边界检查。 如果伤害大于怪物的 HP 会怎样? go负值有意义还是应该降为0? 考虑给 Monster 添加一个方法:
public class Monster {
... stuff ...
/**
* @return true if the Monster is still alive, false if it has died
*/
public boolean acceptDamage(int damage) {
hp = hp - damage;
if (hp > 0) {
return true;
}
// doh - we died! set HP to 0 and return false
hp = 0;
return false;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.