# Problem bei Farbe ändern/4Gewinnt



## Royal-Sarge (17. Jun 2012)

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:

```
public void spieler1Einwerfen(String eingabe)
    {
        
            if(eingabe == "A1")
             {
                 A1.farbe = "rot";
                 
           
             }
            
        }
```

Der Konstruktor des Spielfeldes:


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

Datenfelder:

```
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


----------



## Network (17. Jun 2012)

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

```
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)


----------



## Royal-Sarge (17. Jun 2012)

Danke erstmal, aber habe es so aufgeschrieben wie du es gemacht hast und es klappt trotzdem nicht


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


----------



## Network (17. Jun 2012)

Royal-Sarge hat gesagt.:


> Danke erstmal, aber habe es so aufgeschrieben wie du es gemacht hast und es klappt trotzdem nicht
> 
> 
> ```
> ...



Dein erstes Bsp in deinem ersten Post lautet:

```
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


----------



## Royal-Sarge (17. Jun 2012)

Network hat gesagt.:


> Dein erstes Bsp in deinem ersten Post lautet:
> 
> ```
> if(eingabe == "A1")
> ...



nein, 

```
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 

```
A1.farbe = "rot";
```
weil ich das bereits öfter geschrieben habe und man kann auch schreiben

```
if(eingabe == "A1")
```
, das sollte 100 prozentig klappen

Edit: jo, jetzt is ja alles klar


----------



## Royal-Sarge (18. Jun 2012)

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


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


----------

