java - 我在 Java 方法上遇到困难

标签 java methods

我正在尝试编写一些战斗方法,但遇到了一些困难。

代码:

    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/

相关文章:

java - 常见函数类型的方法命名约定

python - 将 python AST 编译为方法

java - 调频 radio : can we implement FM Radio and create and application of it?

file - 如何导入java.nio.file包

java - Android AudioManager 事件监听器?

java - 如何在eclipse的侧边栏中查看对象的方法

language-agnostic - 在 .NET 中重构大型方法

java - 在没有 System.getProperty ("line.separator"的情况下获取新行字符)?

java - 同一个算法在Java和C中的性能分析

C++ 使用指向其他方法的指针在构造函数中分配方法 : what am I doing wrong?