Can someone tell me how I can set a certain value that can be reached and not exceeded . I want to make it so that my objects in my world have a maximum health.(They can get +health when they touch an object of the supply class that I have.
public class Bakterium extends Enemy
{
int speed = 4;
int health = 2;
boolean hitProteingeschoss = false;
/**
* Act- Das Bakterium macht was auch immer es will. Diese Methode wird aufgerufen, wenn
* Act oder Run Methode aufgerufen wird
*/
public void act()
{
move(5);
randomTurn();
hitByProteingeschoss();
}
/**
* Das Bakterium dreht sich mit einer 25 prozentigen Wahrscheinlichkeit um eine zufällig generierte Gradzahl aus dem Zahlenbereich [-20,20]
*/
public void randomTurn()
{
if(Greenfoot.getRandomNumber(100)<25);
{
turn(Greenfoot.getRandomNumber(41)-20);
}
}
/**
* Jeder Treffer mit der Instanz der Klasse Proteingeschoss verursacht den Verlust eines Lebenspunktes. Nach einem Treffer wird das
* Objekt Proteingeschoss aus der Welt entfernt. Wenn ein Objekt der Bakteriumsklasse keine Lebenspunkte mehr hat wird es aus der
* Welt entfernt. Bevor das Bakterium stirbt lässt es ein Objekt der Klasse Supplies zurück.
*/
public void hitByProteingeschoss()
{
Actor proteingeschoss = getOneIntersectingObject(Proteingeschoss.class);
if(proteingeschoss != null && !hitProteingeschoss)
{
health--;
hitProteingeschoss = true;
getWorld().removeObject(proteingeschoss);
}
else if(!isTouching(Proteingeschoss.class))
{
hitProteingeschoss = false;
}
if(health <= 0)
{
Supplies supplies = new Supplies();
if (Greenfoot.getRandomNumber(1000)<382)
{
getWorld().addObject(supplies, getX(), getY());
}
Blutgefäß blutgefäß = (Blutgefäß)getWorld();
Counter counter = blutgefäß.getCounter();
counter.addScore();
getWorld().removeObject(this);
}
}public class Erythrozyte extends Friend
{
/**
* Act - do whatever the Erythrozyte wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
int health = 3;
boolean hitEnemy = false;
boolean touchingSupplies = false;
public void act()
{
hitByEnemy();
randomTurn();
turnAtEdge();
move(3);
touchSupplies();
}
/**
* Die Erythrozyte soll sich um einen zufälligen Betrag aus einem Intervall von [-30,30] Grad drehen.
* Die Drehung um diesen Betrag erfolgt mit einer 30 prozentigen Wahrscheinlichkeit.
*/
public void randomTurn()
{
if(Greenfoot.getRandomNumber(100)<34)
{
turn(Greenfoot.getRandomNumber(81)-40);
}
}
/**
* Wenn die Erythrozyte am Ende der Welt angekommen ist, dann macht sie eine Drehung um einen zufälligen Betrag aus einem Intervall von [-20,20] Grad.
*
*/
public void turnAtEdge()
{
if(this.getWorld() != null)
if(isAtEdge())
{
turn(Greenfoot.getRandomNumber(71)-35);
}
}
/**
* Wenn die Erythrozyte von einem Objekt der Klasse Enemy getroffen wird, verliert sie einen Lebenspunkt. Wenn eine Instanz keine Lebenspunkte mehr
* wird sie aus der Welt entfernt.
*/
public void hitByEnemy()
{
Actor enemy = getOneIntersectingObject(Enemy.class);
if (enemy != null && !hitEnemy)
{
health--;
hitEnemy = true;
}
else if (!isTouching(Enemy.class))
{
hitEnemy = false;
}
if (health <= 0)
{
Blutgefäß blutgefäß = (Blutgefäß)getWorld();
CounterForErythrozyte counterforerythrozyte = blutgefäß.getCounterForErythrozyte();
counterforerythrozyte.addScore();
getWorld().removeObject(this);
}
}
/**
* Wenn ein Objekt der Klasse Erythrozyte ein Objekt der Klasse Supplies berührt, dann erhält es einen Lebenspunkt.
*/
public void touchSupplies()
{
if(this.getWorld() != null)
{
if(isTouching(Supplies.class) && !touchingSupplies)
{
health++;
touchingSupplies = true;
}
else if(!isTouching(Supplies.class))
{
touchingSupplies = false;
}
if(isTouching(Supplies.class))
{
removeTouching(Supplies.class);
}
}
}
}public class Leukozyte extends Friend
{
private int health = 4;
private boolean hitEnemy = false;
private int speed = 3;
/**
* Act- Die Leukozyte, macht was auch immer sie will. Diese Methode wird aufgerufen, wenn die
* Act oder Run Methode aufgerufen wird
*/
public void act()
{
fire();
hitByEnemy();
keyMovement();
consumeSupplies();
}
/**
* Durch das einmalige klicken der Maustaste wird ein Objekt der Klasse Proteingeschoss geschossen. Das Proteingeschoss wird geradlinig mit einer
* konstanten Geschwindigkeit in die Richtung der Koordinaten gefeuert, von dem aus die Maus geklickt wurde.
*/
public void fire()
{
if(Greenfoot.mousePressed(null))
{
Proteingeschoss proteingeschoss = new Proteingeschoss();
getWorld().addObject(proteingeschoss, getX(), getY());
proteingeschoss.turnTowards(Greenfoot.getMouseInfo().getX(), Greenfoot.getMouseInfo().getY());
}
}
/**
* Ein Berührung mit einer Objekt der Klasse Enemy zieht ein Lebenspunkt von einer Instanz der Klasse Leukozyte ab. Wenn diese Leukozyte keine
* Lebenspunkte mehr hat, wird sie von der Welt entfernt und das Programm gestoppt.
*/
public void hitByEnemy()
{
Actor enemy = getOneIntersectingObject(Enemy.class);
if(isTouching(Enemy.class) && !hitEnemy)
{
Blutgefäß blutgefäß = (Blutgefäß)getWorld();
Healthbar healthbar = blutgefäß.getHealthbar();
healthbar.health--;
hitEnemy = true;
}
else if (!isTouching(Enemy.class))
{
hitEnemy = false;
}
if(this.getWorld() != null)
{
if(health <= 0)
{
getWorld().removeObject(this);
}
}
}
/**
* Durch das Betätigen der Tasten "w, a, s, d" bewegt sich eine Instanz der Klasse Leukozyte mit einer Geschwindigkeit von drei Pixeln pro Sekunde.
*/
public void keyMovement()
{
if(this.getWorld() != null)
{
if(Greenfoot.isKeyDown("w"))
{
setLocation(getX(), getY() - speed);
}
if(Greenfoot.isKeyDown("s"))
{
setLocation(getX(), getY() + speed);
}
if(Greenfoot.isKeyDown("a"))
{
setLocation(getX() - speed, getY());
}
if(Greenfoot.isKeyDown("d"))
{
setLocation(getX() + speed, getY());
}
}
}
/**
* Wenn ein Objekt der Klasse Leukozyte ein Objekt der Klasse Supplies berührt, so wird dieses Objekt aus der Welt entfernt.
*/
public void consumeSupplies()
{
if(this.getWorld() != null)
{
if(isTouching(Supplies.class))
{
removeTouching(Supplies.class);
}
}
}
}if (health < 3)
{
health++;
}