OOP Variablen zwischen mehreren Klassen

Sora07

Mitglied
Hallo zusammen,
Ich hab vor einer Woche angefangen Java zu lernen. Um mein können zu testen hab ich mir ein kleines Textadventure geschaffen welches auch so läuft wie gewollt. Nun wollte ich es jedoch mit OOP probieren und bin ziemlich schnell auf ein kleines Problem gestoßen, und zwar:

Habe ich eine Spieler Klasse mit verschiedenen Werten wie zB Lebenspunkte
Eine Klasse in der ich den "Kampf" ablaufen lasse, also werden Lebenspunkte abgezogen.
Ich weiß zwar wie ich die Lebenspunkte ( Anfangswert von 100 in der Spieler Klasse ) in meine Kampf Klasse hole und verändere, jedoch würde ich gerne wissen ob es möglich ist den neuen Lebenspunkte werden in meine Spieler Klasse zu übertragen, da sonst jeder neue Kampf wieder die 100 Punkte aus der Spielerklasse nimmt und somit ihn sozusagen resettet.

Die Test1 Klasse sind die Start Lebenspunkte
Code:
public class Test1 {
    int hp=100;  
    public Test1() {
    }   
    public int getHp() {
        return hp;
    }
    public void setHp(int hp) {
        this.hp = hp;
    }      
}

Die Test2 Klasse ist ein eine Beispiel Veränderung der Lebenspunkte

Code:
public class test2 {
   
    Test1 test = new Test1();
    int hp= test.getHp();
    public void Kampf()
    {       
        hp = hp-10;
        System.out.println(hp + " Diese Wert soll in der neue übernahme Wert sein anstatt 100");
    }
}

Test ist die Main welche am ende die veränderten Lebenspunkte erhalten soll

Code:
public class test {
    public static void main(String[] args) {       
        Test1 test = new Test1();
        int hp= test.getHp();       
    System.out.println(hp +" Hp von test 1 übernommen");      
        test2 t = new test2();
        t.Kampf();      
        System.out.println(hp +" Jetzt soll hp anstatt 100 meine veränderten 90 werden");   
    }
}
 

Cromewell

Top Contributor
Du kannst einfach beim Kampf player.setHealth(player.getHealth() - enemy.getDamage()); machen, also den Setter von Health benutzen. (enemy damage ist jetzt nur ein Beispiel..)

Und du erstellst immer neue Objekte vom Spieler (test1), du solltest aber den Spieler per Parameter weiterreichen, damit du zum Schluss, beim Ausgeben, dasselbe Objekt, wie zu anfangs hast.
 

Cromewell

Top Contributor
public void Kampf()
Z.B, wenn du hier in die Klammern (Klassenname Variablenname,...) eintragen würdest. Also konkret
Java:
public void fight(Player ply){
//code
}
bzw. bei dir fight(Test1 t)

Java:
public class test2 {

    public void Kampf(Test1 t){     
       t.setHp(t.getHp()-10);
    }
}
 

Sora07

Mitglied
Ok aber wenn ich das so mache, sagt er mir das ich in der Main verändern soll
aus t.Kampf();
soll t.Kampf(test);
gemacht werden.
Warum ? und was genau bewirkt das ?
 

Meeresgott

Bekanntes Mitglied
Java:
public class Player
{
      /**
       *  Das Leben das der Spieler aktuell hat 
        */
       private int leben;

       //Der Maximalwert für das Leben
       private static final int LEBEN_MAX = 100;      

       Player()
       {  
             leben = LEBEN_MAX;   // Das Leben ist beim erstellen des Spielers Maximal
        }
        
        /**
          * Diese Methode zieht dem Spieler so viele Leben ab wie übergeben werden 
          * @param leben Das Leben, das abgezogen werden soll.
         */
        public void verliereLeben(int leben)
        {
                this.leben = this.leben-leben;
        }

        /**
           * Diese Methode Resetet das Leben auf den Maximalwert
           */
        public void resetLeben()
        {
               leben = LEBEN_MAX;
        }
}

würde es so versuchen.

Dann müsstest du nicht das ganze Object übergeben sondern nur dass Leben das dem Spieler abgezogen wird.
 

Sora07

Mitglied
Ok
Ich habe ein bisschen rumprobiert aber irgendwie stelle ich mich ein bisschen an :D

Hier ist dein Player den hab ich einfach mal als test kopiert und ein getter hinzugefügt um in der Kampf Klasse die aktuellen leben zu haben
Code:
public class Player
{
      /**
       *  Das Leben das der Spieler aktuell hat 
        */
       private int leben;

       //Der Maximalwert für das Leben
       private static final int LEBEN_MAX = 100;      

       Player()
       {  
             leben = LEBEN_MAX;   // Das Leben ist beim erstellen des Spielers Maximal
        }
       
        /**
          * Diese Methode zieht dem Spieler so viele Leben ab wie übergeben werden 
          * @param leben Das Leben, das abgezogen werden soll.
         */
        public void verliereLeben(int leben)
        {
                this.leben = this.leben-leben;
        }

        /**
           * Diese Methode Resetet das Leben auf den Maximalwert
           */
        public void resetLeben()
        {
               leben = LEBEN_MAX;
        }

        public int getLeben() {
            return leben;
        }

       
}

Dann ist hier der Kampf
Code:
public class test2 {
   
    Player ply = new Player();
   
    public void Kampf()
    {
        int leben=ply.getLeben();
        System.out.println(leben);
        leben = leben-90;
        ply.verliereLeben(leben);
        
    }
       
}

Und hier die Main
Code:
public class test {
    public static void main(String[] args) {
       
       
        Player ply = new Player();
       
       
    System.out.println( ply.getLeben()+ " Hp von test 1 übernommen");   
   
        test2 t = new test2();
        t.Kampf();
        System.out.println(ply.getLeben() +" Hier soll keine 100 mehr stehen!");
   
    }

}

Mein letzter System.out.prin sollte mir die aktualisierten Leben anzeigen oder ? Jedenfalls stehen da wieder die 100
Vielen Dank für die antworten bisher !
 

looparda

Top Contributor
Java:
Player ply = new Player();

in der Kampf-Klasse ist natürlich nicht so sinvoll, da bei jedem Kampf ein neuer Spieler erstellt wird, der wieder 100HP besitzt (was ja das Problem ist, wenn ich es richtig verstanden habe).
Stattdessen musst du den Player als Parameter in fight übergeben (so wie es Cromewell beschrieben hat, es aber von dir noch nicht umgesetzt wurde) oder vergleichbares.
 

Sora07

Mitglied
Ok es klappt jetzt! Danke !:D
Aber irgendwie verstehe ich nicht den Parameter teil nicht :(
Was genau macht der Parameter und warum funktioniert es nicht ohne ?
 

Salo

Aktives Mitglied
Wenn du einen Parameter übergibst, dann kann die Methode, bzw. der Konstrukter mit dem Objekt arbeiten, auch wenn das Objekt nicht in der Klasse definiert ist, in der die Methode/Konstr. programmiert wurde.

Du kannst dann änderungen an dem übergebenem Objekt vornehmen, die dann Gespeichert werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Variablen zwischen Klassen übertragen Java Basics - Anfänger-Themen 8
B Variablen: unterschied zwischen Klassen und Instanzvariable Java Basics - Anfänger-Themen 2
C Variablen zwischen Methoden übergeben Java Basics - Anfänger-Themen 9
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
T Variablen Java Basics - Anfänger-Themen 1
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
M Aufsummieren von variablen Wertegrößen Java Basics - Anfänger-Themen 17
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
ashi Variablen aufrufen Java Basics - Anfänger-Themen 17
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
C Konstruktoren und Variablen Java Basics - Anfänger-Themen 42
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
Arif Vererbung Methodenvererbung mit finalen Variablen Java Basics - Anfänger-Themen 1
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
M Java Instanz-Variablen ? Java Basics - Anfänger-Themen 3
B Variablen von Methoden übertragen Java Basics - Anfänger-Themen 2
M Variablen umbenennen Java Basics - Anfänger-Themen 1
T Körper Brechnung - Lokale Variablen in Methoden übergeben Java Basics - Anfänger-Themen 10
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
mars90 Fehler in der Variablen Deklaration Java Basics - Anfänger-Themen 8
E Variablen in formatierter Ausgabe Java Basics - Anfänger-Themen 15
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
M Komisches Verhalten der Variablen Java Basics - Anfänger-Themen 6
H Variablen Multiplikation einer inkrementierten Variablen Java Basics - Anfänger-Themen 5
scratchy1 Variablen vertauschen wenn Bedingung "umgedreht" wird Java Basics - Anfänger-Themen 40
J Variablen mit einer anderen Klasse bekannt machen Java Basics - Anfänger-Themen 7
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
A Übergreifende Variablen Java Basics - Anfänger-Themen 17
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
P Variablen Variablen voneinander abhängig Java Basics - Anfänger-Themen 54
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
L Variablen in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
J Klassen Variablen in andere Klassen oder Methoden übernehmen Java Basics - Anfänger-Themen 1
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
temi Redundante Variablen Java Basics - Anfänger-Themen 29
Aprendiendo Zweifel mit versteckter Variablen Java Basics - Anfänger-Themen 16
L Variablen einmal nur zu weisen Java Basics - Anfänger-Themen 62
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
S Vererbung Variablen klassenübergreifend nutzen Java Basics - Anfänger-Themen 42
R Auf Variablen einer anderen Klasse zugreifen? Java Basics - Anfänger-Themen 1
D Fehlermeldung obwohl Variablen bereits deklariert sind? Java Basics - Anfänger-Themen 14
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
Aruetiise Variablen JFrame und Variablen Java Basics - Anfänger-Themen 3
L Variablen dekleration + reset Java Basics - Anfänger-Themen 16
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
C Variablen von einem JFrame in einen anderen übertragen Java Basics - Anfänger-Themen 3
P Interface Variablen-Inhalte werden nicht übergeben Java Basics - Anfänger-Themen 3
C Variablen in Schleifen außerhalb verwenden Java Basics - Anfänger-Themen 2
S Variablen Flexible Variablen Namen Java Basics - Anfänger-Themen 3
R Erste Schritte 3 Variablen hochzählen lassen Java Basics - Anfänger-Themen 1
RowdyN Variablen Variablen beliebig benennen? Java Basics - Anfänger-Themen 6
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
H Variablen einer Schleife zwischenspeichern Java Basics - Anfänger-Themen 2
P Klassen Variablen von einer Klasse zur anderen Java Basics - Anfänger-Themen 5
H Objekt überschreibt Variablen vorheriger Objekte Java Basics - Anfänger-Themen 2
P Variablen in Excel speichern Java Basics - Anfänger-Themen 6
S PHP Aufruf mit mehreren Variablen Java Basics - Anfänger-Themen 2
F Variablen unterschiedlicher Datentypen Java Basics - Anfänger-Themen 6
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
L Vergleich zweier Variablen, mit Abweichung Java Basics - Anfänger-Themen 3
P Variablen einer Methode in andere Method übergeben Java Basics - Anfänger-Themen 6
G Variablen Verwendung von Variablen in anderer Klasse Java Basics - Anfänger-Themen 6
P Textfelder in Variablen speichern Java Basics - Anfänger-Themen 13
K arraygröße durch variablen Konstruktor? Java Basics - Anfänger-Themen 7
J Vererbung Variablen aus Superklasse übernehmen Java Basics - Anfänger-Themen 2
L Variablen aus TXT Datei auslesen und vergleichen. Java Basics - Anfänger-Themen 5
K Welchen Typ haben Variablen in Default-Methoden und in statischen Methoden in Schnittstellen? Java Basics - Anfänger-Themen 4
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
L zwei Variablen gleichzeitig übergeben Java Basics - Anfänger-Themen 6
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
D Klassen Verhalten von Klassenvererbung bei Variablen Java Basics - Anfänger-Themen 1
G Alle Objekte und Variablen automatisch ausgeben Java Basics - Anfänger-Themen 7
S OOP Werte von Vektoren mit 3 Variablen ausgeben lassen Java Basics - Anfänger-Themen 3
A Variablen aus einer Schleife gezielt auslesen Java Basics - Anfänger-Themen 11
A Methoden Zugriff auf eingelesene Variablen in der main Methode (ohne Änderung der Parameterliste) Java Basics - Anfänger-Themen 4
K Enigma, variablen übernehmen Java Basics - Anfänger-Themen 6
F Erste Schritte Dynamische Variablen Java Basics - Anfänger-Themen 15
N Variablen zurück casten Java Basics - Anfänger-Themen 3
M Repräsentation von variablen/OOP Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben