# BlueJ Tic Tac Toe öffnen?



## Jänö (24. Okt 2012)

Ich habe auf der Seite Java/TicTacToe ? ZUM-Wiki 
einen möglichkeit gefunden, in BlueJ tic tac toe zu programmieren und es in der Konsoloe auszugeben.
Ich hab zwei Klassen gemacht, in einer der code:

```
import java.io.*; // wird von der Eingabe benötigt
 
public class Spielfeld {
    //Eigenschaften
    private Kaestchen[][] feld;
    private static BufferedReader in; // Eingabe
 
    //Konstruktor
    public Spielfeld() {
        feld = new Kaestchen[3][3];
        for (int i=0;i<3;i++){// senkrecht
            for (int j=0;j<3;j++){// waagerecht
                feld[j][i]=new Kaestchen();
            }
        }
 
        // Vorbereitung für die Eingabe
        in = new BufferedReader(new InputStreamReader(System.in));
 
    }
 
    //Methoden
    public void setzeSpielstein(int x, int y, String stein){
        feld[x][y].setzeStein(stein);
    }
 
    public void gibSpielAus(){
        System.out.println("\n  012");
        for (int i=0;i<3;i++){
            System.out.print(i+" ");
            for (int j=0;j<3;j++){
                System.out.print(feld[j][i].getZeichen());
            }
            System.out.println(); // Zeilenumbruch nach 3 Kaestchen
        }
 
    }
 
    public void spieleEineRunde(){
        // unguenstig: Starre Anzahl von Zügen, immer 10 Züge
        int x,y;
        for (int i=1;i<5;i++){
            gibSpielAus();
            System.out.print("Spieler X bitte die x-Koordinate (0-2)");
            try {
            x=liesInt();
            }
             catch(IOException e) {
            x=-1;
            }
            System.out.print("Spieler X bitte die y-Koordinate (0-2)");
            try {
            y=liesInt();
            }
            catch(IOException e) {
            y=-1;
            }
            setzeSpielstein(x, y, "X");
            gibSpielAus();
            System.out.print("Spieler O bitte die x-Koordinate (0-2)");
            try {
            x=liesInt();
            }
             catch(IOException e) {
            x=-1;
            }
            System.out.print("Spieler O bitte die y-Koordinate (0-2)");
            try {
            y=liesInt();
            }
            catch(IOException e) {
            y=-1;
            }            
            setzeSpielstein(x, y, "O");
        }
    }
 
    // Methode für die Eingabe
    // Mehr hier: [url]http://www.wifo.uni-mannheim.de/Java/oop/OOPinJava/kapitel11/StandardEingabe_java.html[/url]
    public int liesInt() throws IOException {
        try {
        return Integer.parseInt(in.readLine());
        }
        catch(IOException e) {
          return (-1);
        }
    }
}
```

in der anderen der code 


```
public class Kaestchen {
    String zeichen;
 
    public Kaestchen() {
        zeichen=" "; // Am Anfang leer
    }
 
    public void setzeStein(String pZeichen) {
        if (!zeichen.equals(" ")) {System.out.println("Besetzt!");} 
        else {
            if (pZeichen.equals("X") || pZeichen.equals("O")) {zeichen=pZeichen;} 
            else System.out.println("Ungueltige Eingabe, bitte X oder O waehlen!");
        }
    }
 
    public String getZeichen(){
        return zeichen;
    }
}public class Kaestchen {
    String zeichen;
 
    public Kaestchen() {
        zeichen=" "; // Am Anfang leer
    }
 
    public void setzeStein(String pZeichen) {
        if (!zeichen.equals(" ")) {System.out.println("Besetzt!");} 
        else {
            if (pZeichen.equals("X") || pZeichen.equals("O")) {zeichen=pZeichen;} 
            else System.out.println("Ungueltige Eingabe, bitte X oder O waehlen!");
        }
    }
 
    public String getZeichen(){
        return zeichen;
    }
}
```

die Klassen wurden automatisch verknüpft, aber jetzt weiß ich nicht wie ich Tic Tac Toe öffnen soll?
Wenn ich das Spielfeld erstelle, dann weiß ich nicht, welche Methode ich ausführen soll, abgesehn davon hab ich alle ausprobiert und keine geht.


----------



## L-ectron-X (24. Okt 2012)

Dir fehlt eine Klasse, die die main()-Methode enthält bzw. eine main()-Methode überhaupt.
Ich kenne BlueJ nicht, aber ich glaube mal gelesen zu haben, dass BlueJ die main()-Methode vor dem BlueJ-Anwender versteckt.


----------



## Jänö (24. Okt 2012)

In BlueJ braucht man keine main.

Ich kann ja beide Klassen kompilieren, aber dann weiß ich nicht, wie ich sie öffnen soll.


----------



## L-ectron-X (24. Okt 2012)

Was genau ist mit "öffnen" gemeint?
Zum Starten eines Java-Programms braucht man immer eine main()-Methode. U.U. musst du an irgendeiner Stelle BlueJ erklären, was zum Starten deines Programms (und das meinst du doch?) gemacht werden soll.


----------



## C_A (25. Okt 2012)

Du setzt einen rechten Mausklick auf die Klasse Spielfeld und wählst "new Spielfeld()" aus. In der Objektbar wird ein neues Spielfeld-Objekt angelegt. 

Dort wieder einen rechten Mausklick auf "spieleEineRunde()". 

Viel Spaß!

Grüße 
Florian


----------



## Jänö (25. Okt 2012)

Dann kommt bei mir das:

  012
0    
1    
2    
Spieler X bitte die x-Koordinate (0-2)

In einer Konsole, also kann ich auch keine Koordinaten eingeben :/


----------



## C_A (25. Okt 2012)

Jänö hat gesagt.:


> Dann kommt bei mir das:
> 
> 012
> 0
> ...



Das "Spiel" ist ausgesprochen einfach. Gib eine 1 ein und klick Enter. dann musst Du die y-Koordinate eingeben, gibst zum Beispiel 0 ein und klickst wieder Enter. Dann ist der andere Spieler dran usw. 

Viel mehr gibt die Konsolenversion tatsächlich nicht her.


----------

