Problem bei Farbe ändern/4Gewinnt

Royal-Sarge

Mitglied
Also wie der Titel schon sagt, möchte ich eine Methode schreiben, um die Farbe zu ändern, also ich programmiere 4Gewinnt und dabei habe ich mir erst einmal eine Methode ausgedacht, dass ein Spielfeld gezeichnet wird, das blau ist und weiße Kreise hat. Die Methode erfordert ein String als Eingabe und soll dann die Farbe auf rot setzen, was bei mir aber nicht klappt. Zur Info noch: der ganze Code läuft über BlueJ.

Hier ein ausschnitt der Methode:
Java:
public void spieler1Einwerfen(String eingabe)
    {
        
            if(eingabe == "A1")
             {
                 A1.farbe = "rot";
                 
           
             }
            
        }

Der Konstruktor des Spielfeldes:

Java:
A1 = new Kreis(10, 10, 20, "weiss", true);

Datenfelder:
Java:
private Kreis A1;

Also sind nur Ausschnitte, funktioniert aber alles. ich weiß nur nicht, wieso es nicht klappt, dass die Farbe auf Rot geht.
Edit: was ich noch dazu sagen sollte: das alles wird auf einer Leinwand ausgegeben, deswegen auch keine deklaration von farbe usw, das ist alles in einer anderen Klasse
 
Im Grunde kann man es nur wiederholen, die Grundlagen der Programmierung.
== bedeutet dasselbe!!!

Das String-Objekt eingabe ist aber nicht dasselbe wie der andere String "A1".
Um zu überprüfen ob es sich um "gleiche" Objekte handelt musst du schreiben
Java:
if( eingabe.equals("A1") );

Wenn du dir ein Eis kaufst und du es mit jmd. teilst, dann habt ihr beide dasselbe. (== liefert true)
Wenn ihr beide 2 Eis kauft, aber mit identischer Sorte, Größe, Waffel und Kugelmenge dann habt ihr beide das Gleiche. (object.equals(object) liefert true aber == liefert false, weil 2 Objekte)
 
Danke erstmal, aber habe es so aufgeschrieben wie du es gemacht hast und es klappt trotzdem nicht

Java:
if(Kreis.equals("A1") )
        {               
          A1.farbe = "rot";          
             }
 
Danke erstmal, aber habe es so aufgeschrieben wie du es gemacht hast und es klappt trotzdem nicht

Java:
if(Kreis.equals("A1") )
        {               
          A1.farbe = "rot";          
             }

Dein erstes Bsp in deinem ersten Post lautet:
Java:
if(eingabe == "A1")
             {
                 A1.farbe = "rot";
                 
           
             }

Darauf war mein Bsp bezogen gewesen. Jetzt vergleichst du plötzlich den Kreis mit der variable A1 ???:L Sorry davon war nichts in deinem Bsp-Code zu sehen 🙂

Gruß
Net 😉
 
Dein erstes Bsp in deinem ersten Post lautet:
Java:
if(eingabe == "A1")
             {
                 A1.farbe = "rot";
                 
           
             }

Darauf war mein Bsp bezogen gewesen. Jetzt vergleichst du plötzlich den Kreis mit der variable A1 ???:L Sorry davon war nichts in deinem Bsp-Code zu sehen 🙂

Gruß
Net 😉

nein,
Java:
if(Kreis.equals("A1") ) //Kreis ist hier die Eingabe, weil man den kreis genau angeben mus, zb A1 ist gleich Spalte 1, reihe A
        {               
          A1.farbe = "rot";          
             }

Ich vermute aber den Fehler bei
Java:
A1.farbe = "rot";
weil ich das bereits öfter geschrieben habe und man kann auch schreiben
Java:
if(eingabe == "A1")
, das sollte 100 prozentig klappen

Edit: jo, jetzt is ja alles klar 😀
 
Wie mein Informatiklehrer sagen würde, war es ein "ganz banaler Fehler".
Ich hatte lediglich vergessen, die Farbe auf die Leinwand zu bringen, klar, dass die Farbe auf Rot geändert wird, aber die Leinwand zeigt es dann nicht an, also muss ich es auf die Leinwand zeichnen und es hätte einfach gefehlt

Java:
A1.zeichnen()
und schon klappts, da hätten aber auch noch andere drauf kommen können :/
 

Zurück
Oben