Memory Spielerwechsel

.basti

Aktives Mitglied
Hallo zusammen,
ich probier grad memory zu programmieren und Scheiter am Spieler Wechsel. Meine Spieler hab ich in färben aufgeteilt: Blau und Rot. In meiner Methode Spielerwechsel überprüfe ich ob aktuell Blau oder Rot dran ist und setze meinen aktuellen Spieler eben aufs andere. Allerdings geht das nicht.
Java:
if(akt_spieler == blauerSpieler) {
            akt_spieler = roterSpieler;
        } else {
            akt_spieler = blauerSpieler;
        }
Hier wird wenn der Aktuelle Spieler blau ist er auf rot gesetzt, danach springt meine Anweisung aber direkt ins else event und setzt ihn wieder auf Blau, was ja auch logisch ist. Mir fällt aber keine Möglichkeit ein das zu umgehen. Kann da jemand helfen?
 

KonradN

Super-Moderator
Mitarbeiter
Also Deine Beobachtung ist schlicht falsch. Bei dem angegebenen Code wird entweder die Zuweisung auf roterSpieler oder eben auf blauerSpieler gemacht. Nie beides. Das ist halt die Funktionsweise des if Statements:
- erst wird die Bedingung ausgewertet
- Dann wird entweder der Befehl ausgeführt (so die Bedingung true ergeben hat) oder es wird - so vorhanden - der else Block ausgeführt.

Von was für einem Typ sind die Variablen? Wie sind diese Initialisiert?
 

Neumi5694

Top Contributor
Kann es sein, dass 'blau' und 'rot' identisch sind oder akt_spieler lokal ist anstatt eine Instanzvariable?
Oder rufst du die Methode zum Wechsel vielleicht zwei mal auf? Ohne Kontext kann man dir nicht sagen, wo dein Fehler liegt.
Der gezeigte Code ist jedenfalls ok und macht genau das, was du haben möchtest.
 

Robertop

Bekanntes Mitglied
Woher weißt du, dass der Spieler erst auf Rot und dann direkt wieder auf Blau gesetzt wird? Ich vermute eher, dass er einfach immer nur den Else Block ausführt und der Spieler deshalb nach dem ersten Aufruf nie wieder Rot wird.

Sind deine variablen primitive Typen? Wenn nicht könnte es schon helfen, .equals anstatt == zu verwenden.
 

Ähnliche Java Themen

Neue Themen


Oben