Greenfoot/Java: Wie verhindere ich, dass sich die beiden Charaktere gegenseitig überlappen und wie füge ich eine Lebensanzeige hinzu?

Also ich arbeite in der Schule im Moment mit Greenfoot und programmiere eine Art Street Fighter. Ich habe bei den folgenden beiden Dingen Probleme:

Also erstens kriege ich es nicht hin, dass die beiden Charaktere sich gegenseitig nicht überlappen. Sie rennen also durcheinander durch.

Das zweite Problem ist Folgendes: Ich möchte eine Lifebar, also eine Lebensanzeige hinzufügen.

Ich bin noch nicht dabei, es zu animieren, sondern einfach dabei, dass das Programm stoppt, wenn der Spieler keine Leben mehr hat. Es funktioniert aber einfach nicht. Es stoppt einfach immer viel zu früh, sobald ich Kontakt zum anderen Spieler habe, aber noch nicht schlage.

Ich kann leider nicht den gesamten Code hier reinkopieren, da er die Maximallänge überschreitet. Wer mir so nicht weiterhelfen kann, sich aber nicht mit dem Thema auskennt, der kann mich privat anschreiben. Dann kann ich die ganze Datei rüberschicken.

Hier also nur der wahrscheinlich relevante Teil des Codes:

In fighter1:

public static boolean hit = false;

public void attack1() {
  if (Greenfoot.isKeyDown("h") && !Greenfoot.isKeyDown("k") && !Greenfoot.isKeyDown("b")) {
    setImage("FH.png");
    hit = true;
  }
  else {
    hit = false;
  }

  if (!Greenfoot.isKeyDown("h") && !Greenfoot.isKeyDown("k") && !Greenfoot.isKeyDown("b")) {
    setImage("FN.png");
  }
}

Fighter 2:

public void lifebar() {
  if (Fighter1.hit = true && isTouching(Fighter1.class)) {
    lifebar = lifebar - 50;
  }

  if (lifebar <= 0) {
    Greenfoot.stop();
  }
}
Computer, programmieren, Java, Greenfoot
Java Methoden aus anderen Unterklassen aufrufen (Greenfoot)?

Hey, habe eine kurze Frage über Vererbungen und Klassen. Im Internet konnte ich darauf bisher keine Antwort finden.

Also erstmal die wichtigsten Punkte zusammengefasst:

Ich habe 2 Unterklassen die von der Actor-Klasse abstammen, die Wiederum Unterklassen besitzen (wie eine Gabel).

Das würde dann wie folgt aussehen:

PlayerRabbit erbt von Rabbit, erbt von Actor und

Carrot, PickAxe... erbt von PickableObjects erbt von Actor.

Ich würde nun gerne von PlayerRabbit aus eine Methode von z.B. PickAxe aufrufen. Hierfür hätte ich folgenden Code geschrieben:

________________________

PickableObjects[] objs = getRabbitWorld().getObjectArrayAt(getX(), getY(), PickableObjects.class);

objs[0].doSomething();

________________________

Ich würde dann ein Objekt "vom Typ PickableObjects", also nur Carnot, PickAxe, Banana... aufnehmen, in einer zwischenvariable speichern und dann auf die Methode doSomething() aufrufen.

Das Problem hierbei ist nun jedoch, dass er nur die Methode aus der Klasse PickableObjects anspricht.

(Wenn ich "public void doSomething" in der Klasse PickableObjects definiere passiert etwas, wenn ich es hingegen nur in den Carnot, PickAxe... definiere erkennt er die Methode nicht)

Würde mich über jede Hilfe freuen! Danke :9

PS: Ja, alle meine Methoden sind Public und ja, die Objekte werden auch direkt angesprochen. (Bei dem Befehl getRabbitWorld().removeObject(objs[0]); kann ich das Objekt zum Beispiel entfernen)

Bild zu Frage
Computer, Schule, Technik, programmieren, Java, Informatik, Greenfoot

Meistgelesene Fragen zum Thema Greenfoot