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++; }