我正在尝试编写一些战斗方法,但遇到了一些困难。
代码:
int attackPower;
int defencePower;
int healthPoints;
int startingHealthPoints;
int remainingHealthPoints;
int damageDone = 0;
//Constructor
public Combat(int initialAttackPower, int initialDefencePower, int initialHealthPoints) {
attackPower = initialAttackPower;
defencePower = initialDefencePower;
healthPoints = initialHealthPoints;
}
//Methods
public void setAttackPower(int newAttackPower) {
attackPower = newAttackPower;
}
public void setDefencePower(int newDefencePower) {
defencePower = newDefencePower;
}
public void setHealthPoints(int newHealthPoints) {
healthPoints = newHealthPoints;
}
int getAttackPower() {
return attackPower;
}
int getDefencePower() {
return defencePower;
}
int getHealthPoints() {
return healthPoints;
}
int getDamageDone() {
damageDone = 5;
return damageDone;
}
int getStartingHealthPoints(int currentHP) {
if (damageDone == 0) {
return startingHealthPoints = healthPoints;
}
else {
return startingHealthPoints = currentHP + damageDone;
}
}
int getRemainingHealthPoints() {
return remainingHealthPoints = startingHealthPoints - damageDone;
}
主要:
Combat combat1 = new Combat(15,20,100);
System.out.println("Total HP: " + combat1.getHealthPoints());
System.out.println("Starting HP: " + combat1.getStartingHealthPoints(combat1.getRemainingHealthPoints()));
System.out.println("Attack 1: " + combat1.getDamageDone());
System.out.println("After Attack 1 HP: " + combat1.getRemainingHealthPoints());
System.out.println("Before Attack 1 HP: " + combat1.getStartingHealthPoints(combat1.getRemainingHealthPoints()));
System.out.println("Attack 2: " + combat1.getDamageDone());
System.out.println("After Attack 2 HP: " + combat1.getRemainingHealthPoints());
System.out.println("Before Attack 2 HP: " + combat1.getStartingHealthPoints(combat1.getRemainingHealthPoints()));
System.out.println("Total HP: " + combat1.getHealthPoints());
主要输出:
Total HP: 100
Starting HP: 100
Attack 1: 5
After Attack 1 HP: 95
Before Attack 1 HP: 100
Attack 2: 5
After Attack 2 HP: 95
Before Attack 2 HP: 100
Total HP: 100
理想情况下,每次攻击后,起始生命值和剩余生命值应相应改变。例如,攻击2后HP应为90,攻击前HP应为95。那么攻击3后HP应为85,攻击前HP应为90。依此类推。我可能犯了一个简单的错误,但我确实需要一些帮助。
最佳答案
你的“之前”是: getHealthPoints()
接下来是某种 receiveAttack() 方法,您可以在其中传递代表攻击强度的生命值。
public void receiveAttack(int damage) {
healthPoints -= damage;
}
现在,再次调用 getHealthPoints(),您将获得总数。
如果您需要存储“最近的伤害”,当然,为此添加另一个字段并在对象受到攻击时存储它。
关于java - 我在 Java 方法上遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32815446/