Vererbung Variable aus anderer Klasse verwenden

TDK-SplasH

Mitglied
Hallo,

ich arbeite seit paar Wochen wegen der schule mit Greenfoot. Bin momentan an einem kleine Jump'n'Run Spiel, aber habe ein Problem. Hab zwar einiges dazu im Internet gefunden, allerdings hat mir nichts weiter geholgen :/

Also, meine Klassen sehen so aus:Unbenannt.png

Wichtig sind die rot markierten Klassen.

In der Klasse Player steht dieser Quellcode:
Code:
public boolean aufHaus;
    
    public void act() 
    {
        
    }  
     
[...]

    //Haus
    public boolean onHaus(){
        Actor actor = getOneObjectAtOffset(0, 0, Haus.class);
        return actor != null;
    }


In Player1:
Code:
public void act() 
    {
        if(onHaus()){
            aufHaus=true;
        }else{
            aufHaus=false;
        }
    }

und jetzt möchte ich in der Klasse Trampolin auf die Variable "aufHaus" zugreifen. Wie mache ich das??

Man Ansatz sieht wie folgt aus:
Code:
Player pl = new Player();
    boolean pAufHaus = pl.aufHaus;
    public void act() 
    {
        if(pAufHaus){
            getImage().clear();
            System.out.println("123");
        }
    }

Allerdings fukntioniert das nicht..
DAnke im vorraus!

LG
 
Zuletzt bearbeitet:
Moin.

Die Klasse Trampolin sollte eine Referenz zu dem Player-Objekt erhalten, wenn es instanziiert wird, evtl. so...

Java:
Player1 play1 = new Player1();
Trampolin tramp = new Trampolin(play1);

Die Referenz zu dem im Konstruktor übergebenen Player wird dann in einer Objektvariablen gehalten:

Java:
private Player1 play1 = null;

Diese wird im Konstruktor zugewiesen. In die Player-Klasse kommt dann eine neue Methode rein...

Java:
public boolean aufHaus() {
return this.aufHaus;
}

Diese Methode kann dann im Trampolin über die Referenz des Player-Objekts genutzt werden.

Java:
if (play1.aufHaus()) {
...
}

Evtl. solltest Du, da du mehrere Player-Klassen hast, eine abstrakte Player-Klasse einrichten, wovon die konkreten Klassen dann erben.

Gruß
 
Ich krieg das irgendwie nicht hin. Ich hab jetzt die ersten drei Code Zeilen in Trampolin geschrieben, die erste Methode in Player und die zweite Methode in Trampolin.

Jetzt steht da als Fehlermeldung beim compilieren:
variable play1 is already definied in class Trampolin

was hab ich falsch gemacht?
 
Wenn man Threads schließt, dann kann man zumindest diese verlinken, sonst sucht man sich einen Wolf nach den richtigen Thread.

In GreenFoot hast du eine spezielle API:

Hiermit kannst du die Actoren holen:

[c]Actor actor = getOneObjectAtOffset(0, 0, Haus.class);[/c]

Wenn du statt Actor nun auf Haus castest (Grundlagen in Java vorrausgesetz), dann kannst du die Variablen und Methoden von Haus nutzen.
 
kann mir nich bitte einfach irgendjemand den code schicken, den man braucht um variablen aus einer klasse in einer anderen zu verwenden ;(

und vlt sogar erklären warum...
 
das steht in Player als variable:
Code:
public boolean aufHaus;

und das als methode:
Code:
//Haus
    public boolean onHaus(){
        Actor actor = getOneObjectAtOffset(0, 0, Haus.class);
        return actor != null;
    }


in player1 steht das:
Code:
public void act() 
    {   
            if(onHaus()){
                aufHaus = true;
            }else{
                aufHaus = false;
            }
     }

wie kann jetzt trampolin auf diese boolean variable zugreifen?

und wie könnte player auf eine variable in trampolin zugreifen?

EDIT: im ersten post dieses themas ist ein foto auf dem man die beziehungen der klassen sehen kann. trampolin und player haben so wie ich das sehe keine beziehung zu einander, während, player1 von player erbt..
 
Zuletzt bearbeitet:
Bitte lese mein Posting und versuche es nocheinmal.

Ich habe eine Kröte und eine Katze. Wie kann nun Katze auf Hamster zugreifen. So hört sich das an.

Was macht die Methode "getOneObjectAtOffset"??
 

Zurück
Oben