# Tic Tac Toe Wer hat gewonnen?



## Johnny_Burke (17. Apr 2012)

Hallo! Ich bin neu hier!

Undzwar müssen wir für unsere Schule ein Spiel programmieren. Ich habe das Tic Tac Toe Spiel bereits programmiert. Bedauerlicherweise erkennt das Programm bis jetzt noch nicht wer gewonnen hat falls jemand 3mal seine Farbe in einer Reihe gesetzt hat.

Das Programm sieht so aus:


```
import acm.graphics.*; import acm.program.*; import java.awt.*; import java.awt.event.*;

public class TicTac extends GraphicsProgram {
    GRect[] Feld;
    GOval[] Kreis;
    Color[] Farbe;
    int a,b,c,d,e,f,g,h,i,j,o,v,w,x,y,z;
    boolean s;
    
    public TicTac() { 
        s = false;
        x=10;
        y=20;
        start();
        setSize(200,250);
        addMouseListeners();
        start();
        Farbe = new Color[2];
        Farbe [0]=Color.blue;
        Farbe [1]=Color.red;
        Feld = new GRect [9];
        Kreis = new GOval [9];
        for (int i=0;i<9;i++) {
            Feld[i] = new GRect (50,50);
            add (Feld[i], x,y);
            x=x+50;
            z = z+1;
            if (z == 3) {
                y = y+50;
                z = 0;
                x=10;
            }
        }
        x=15;
        y=25;
        for (int i=0;i<9;i++) {
            Kreis[i] = new GOval (40,40);
            Kreis[i].setFilled(true);
            add (Kreis[i], x,y);
            x=x+50;
            z = z+1;
            if (z == 3) {
                y = y+50;
                z = 0;
                x=15;
            }
            Kreis[i].setVisible (false);
        }

        }
        public void mousePressed(MouseEvent e) {
             x = e.getX();
             y = e.getY();
             
            for (int o=0;o<9;o++) {
                if (Kreis[o].contains (x,y)) {
                    if (Kreis [o].isVisible() == false) {
                    Kreis[o].setVisible (true);
                    if (s==false) {
                    
                        Kreis[o].setFillColor (Farbe[0]);
                    s = true;
                }
                else {
                        Kreis[o].setFillColor (Farbe[1]);
                    s = false;
                }
              
                if (Kreis[0].getColor() == Farbe [0]) {
                  j = j+1;
                  
                }
              
               
            }
            
            }
        }
    }
        

}
```

Undzwar hatte ich nämlich vor mit diesen Befehl hier die Abschlussbedingungen zu erstellen:

if (Kreis[0].getColor() == Farbe [0]) {
                  j = j+1;

Leider funktioniert der Befehl nicht richtig. (Dieser ist sogar vom Lehrer. ) Ich benutze BlueJ. Und wenn ich nun den ersten Kreis erscheinen lasse, welcher blau ist, was Farbe 0 entspricht, wird J nicht erhöht wenn ich auf Inspizieren klicke. 

Hat jemand einen anderen Ansatz für mich oder einen guten Abschlussbedingungsalgorhytmus für mich?

Danke


----------



## Final_Striker (17. Apr 2012)

In Java vergleicht man *Objekte *mit der Methode 
	
	
	
	





```
equals
```
und nicht mit 
	
	
	
	





```
==
```

Bsp:


```
boolean gleich = obj1.equals(obj2);
```


----------



## Johnny_Burke (17. Apr 2012)

Wenn ich das jetzt richtig verstanden habe, möchtest du das gerne so haben.


```
if (Kreis[0].equals (Farbe [0])) {
j = j+1;
```

Auch hier zeigt das J keine Reaktion....


----------



## Final_Striker (17. Apr 2012)

Du vergleichst ja auch Kreise mit Farbe.


----------



## Johnny_Burke (17. Apr 2012)

Du schlägst also ein Vergleich zwischen den Kreisen vor? Das würde auch Sinn machen. 


```
if (Kreis[0].equals (Kreis[1])) {
                    j = j+1;
```
 
Meinst du das so?


----------

