The most simple way to increment/decrement a variable is by using the + and - operators. This method allows you increment/decrement the variable by any value you want.
Overflow in int As int data type is 32 bit in Java, any value that surpasses 32 bits gets rolled over. In numerical terms, it means that after incrementing 1 on Integer. MAX_VALUE (2147483647), the returned value will be -2147483648. In fact you don't need to remember these values and the constants Integer.
In C/C++, Increment operators are used to increase the value of a variable by 1. This operator is represented by the ++ symbol. The increment operator can either increase the value of the variable by 1 before assigning it to the variable or can increase the value of the variable by 1 after assigning the variable.
I would just do this. It basically takes the minimum between 100 (the max health) and what the health would be with 15 extra points. It ensures that the user's health does not exceed 100.
public void getHealed() {
health = Math.min(health + 15, 100);
}
To ensure that hitpoints do not drop below zero, you can use a similar function: Math.max
.
public void takeDamage(int damage) {
if(damage > 0) {
health = Math.max(health - damage, 0);
}
}
just add 15 to the health, so:
health += 15;
if(health > 100){
health = 100;
}
However, as bland has noted, sometimes with multi-threading (multiple blocks of code executing at once) having the health go over 100 at any point can cause problems, and changing the health property multiple times can also be bad. In that case, you could do this, as mentioned in other answers.
if(health + 15 > 100) {
health = 100;
} else {
health += 15;
}
You don't need a separate case for each int
above 85
. Just have one else
, so that if the health is already 86
or higher, then just set it directly to 100
.
if(health <= 85)
health += 15;
else
health = 100;
I think an idiomatic, object oriented way of doing this is to have a setHealth
on the Character
class. The implementation of that method will look like this:
public void setHealth(int newValue) {
health = Math.max(0, Math.min(100, newValue))
}
This prevents the health from going below 0 or higher than 100, regardless of what you set it to.
Your getHealed()
implementation can just be this:
public void getHealed() {
setHealth(getHealth() + 15);
}
Whether it makes sense for the Character
to have-a getHealed()
method is an exercise left up to the reader :)
I am just going to offer a more reusable slice of code, its not the smallest but you can use it with any amount so its still worthy to be said
health += amountToHeal;
if (health >= 100)
{
health = 100;
}
You could also change the 100 to a maxHealth variable if you want to add stats to the game your making, so the whole method could be something like this
private int maxHealth = 100;
public void heal(int amountToHeal)
{
health += amountToHeal;
if (health >= maxHealth)
{
health = maxHealth;
}
}
For extra information
You could do the same for when the player gets damaged, but you wouldn't need a minHealth because that would be 0 anyways. Doing it this way you would be able to damage and heal any amounts with the same code.
health = health < 85 ? health + 15 : 100;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With