Java (Greenfoot) Objekte mit Counter löschen?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Ich kann Dir leider nicht direkt helfen, aber ich hoffe Du kannst Englisch. Wenn es um Fragen zur Programmierung geht ist nämlich die englischsprachige Plattform https://stackoverflow.com/ der Anlaufpunkt der Wahl. Dort findest Du einerseits extrem viele Fragen zu fast allen Programmiersprachen, die bereits beantwortet wurden. Du kannst aber auch selbst Fragen stellen.

Hat mir bei mehreren Python Projekten extrem geholfen.

Es ist nicht nur so, dass du dich nicht an Java Naming Conventions hältst, auch halte ich dein Design für unlogisch. Wieso hat das Attribut Leben in der Klasse Leben den Wert 5? Wieso benötigst du es überhaupt, die Klasse repräsentiert doch bereits ein Leben?

Zu dem dort angezeigten Fehler solltest du dir erst einmal die Fehlermeldung (die angezeigt wird, wenn du über den Fehler hoverst) lesen und dann schauen, wie L5 definiert wurde. Innerhalb der Methode deklarierst du sie nur. Eine undefinierte lässt sich jedoch nicht verwenden.

Eigentlich würde ich doch erwarten, dass der Spieler über ein Array (oder eine Liste) an Leben-Objekten verfügt. Bei einem Treffer (diese Methode gehört in die Klasse für den Spieler) wird ihm ein Objekt entzogen.

Überdenke demnach also einmal dein Programmdesign und richte es logisch aus.

PS.: Bitte poste relevanten Code hier (formatiert mit der Code-Funktion des GF-Editors) oder via pastebin/hastebin.


Pasi12400 
Beitragsersteller
 17.02.2018, 22:50

Ich habe erst 1 Jahr Informatik und nutze Java erst seit knapp einem Halben. Bitte daher meine Anfängerfehler zu entschuldigen. Leider weiß ich noch immer nicht wie ich das Problem beheben kann. Beim hovern wird nur angezeigt, dass H5 nicht gefunden wurde.

regex9  18.02.2018, 00:21
@Pasi12400

Du meinst L5?

Schau dir doch einmal an, was du machst. Du deklarierst L5 und benutzt die Variable später, ohne ihr bis dahin auch nur einen Wert zugeordnet zu haben. Bei der Variable world hingegen machst du es doch wieder richtig.

Sollte L5 nun ein Objekt sein, welches der Welt zugeordnet wurde, kannst du es vermutlich über getObjects (von der Klasse World) holen oder einfacher, der Methode LTreffer einfach das betreffende Objekt via Parameter überreichen. So viel zu einer kurzfristigen Lösung.

public void LTreffer(Actor leben) {
  /* ... */
}

Langfristig gesehen solltest du dein Programmdesign wie gesagt überdenken. Womöglich hast du bisher einfach nur drauflos getippt, ohne dir vorher einen Plan anzulegen, wie eine Ausstattung mit Lebensanzeige für das Spiel aussehen könnte.

Sagt dir Java Naming Conventions irgend etwas?

Der erste Buchstabe einer Klasse wird Groß geschrieben danach lowerUpper Camel.

Variabeln werden alle klein geschrieben am Anfang und dann wie bei Klassen lowerUpper Camel.

http://www.oracle.com/technetwork/java/codeconventions-135099.html

Warum ich dir das nun schreibe, ganz einfach, schau mal auf das mittlere Bild. Dort hast du die Klasse Leben und direkt da drunter deklarierst du eine Variable vom Typ Integer mit dem namen Leben ... Was denn nun, ist es eine Klasse oder eine Variable?

Überarbeite bitte deinen Code, sodass es den Names Konventionen von Java entspricht und dann poste den entsprechenden Code noch einmal!