Java/Runden und Java/TicTacToe: Unterschied zwischen den Seiten

Aus ZUM-Unterrichten
< Java(Unterschied zwischen Seiten)
main>Karl Kirst
K (- Kurzinfo Java)
 
main>Ugh
K (typo)
 
Zeile 1: Zeile 1:
{{Kurzinfo|Software}}
{{Babel-1|Java}}


{{Idee|
[[Bild:Tictactoe.jpg]]
Einordnung: Nach der Einführung von Objekt, Klasse, Methode, elementare Datentypen


Variablen vom Typen double haben z.T. sehr viele Nachkommastellen. Mit folgendem Trick schaffen wir es, die Variablen auf zwei Stellen zu runden.
==Variante mit Konsolenein- und ausgabe==
Eine einfache TicTacToe-Variante für [[BlueJ]]. Ein und Ausgabe in der Konsole.


Vorgehen: Eine Zahl, z.B. 3.14159265 multipliziere ich mit 100:  314.159265.
<java>
Dann runde ich  und erhalte 314. Danach teile ich durch 100 und bekomme 3.14.}}
import java.io.*; // wird von der Eingabe benötigt


<source lang="java">
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: http://www.wifo.uni-mannheim.de/Java/oop/OOPinJava/kapitel11/StandardEingabe_java.html
    public int liesInt() throws IOException {
        try {
        return Integer.parseInt(in.readLine());
        }
        catch(IOException e) {
          return (-1);
        }
    }
}
</java>


public double rundeAufZweiStellen(double zahl)  
<java>
{  
public class Kaestchen {
      return Math.round( zahl * 100 ) / 100.0;
    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;
    }
}
}
</source>
</java>
 
==Variante mit GUI==
 
Die folgende Variante wurde mit Netbeans-BlueJ erstellt. Sie soll ein Beispiel für den Umgang mit GUIs sein.
 
<java>
/*
* TicTacGUI.java
*
* Created on 12. März 2007, 19:15
*/
 
/**
*
* @author  ugh
*/
public class TicTacGUI extends javax.swing.JFrame {
    private int amZug;   
    /** Creates new form TicTacGUI */
    public TicTacGUI() {
        initComponents();
        amZug=0;
        textField2.setText("0 startet das Spiel.");
        label1.setText("Tic-Tac-Toe");
        button1.setLabel("_");
        button2.setLabel("_");
        button3.setLabel("_");
        button4.setLabel("_");
        button5.setLabel("_");
        button6.setLabel("_");
        button7.setLabel("_");
        button8.setLabel("_");
        button9.setLabel("_");       
    }
   
    /** This method is called from within the constructor to
    * initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is
    * always regenerated by the Form Editor.
    */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
    private void initComponents() {
        button1 = new java.awt.Button();
        button2 = new java.awt.Button();
        button3 = new java.awt.Button();
        button4 = new java.awt.Button();
        button5 = new java.awt.Button();
        button6 = new java.awt.Button();
        button7 = new java.awt.Button();
        button8 = new java.awt.Button();
        button9 = new java.awt.Button();
        textField1 = new java.awt.TextField();
        label1 = new java.awt.Label();
        textField2 = new java.awt.TextField();
 
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        button1.setLabel("button1");
        button1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                button1MouseClicked(evt);
            }
        });
 
        button2.setLabel("button2");
        button2.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                button2MouseClicked(evt);
            }
        });
 
        button3.setLabel("button3");
        button3.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                button3MouseClicked(evt);
            }
        });
 
        button4.setLabel("button4");
        button4.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                button4MouseClicked(evt);
            }
        });
 
        button5.setLabel("button5");
        button5.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                button5MouseClicked(evt);
            }
        });
 
        button6.setLabel("button6");
        button6.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                button6MouseClicked(evt);
            }
        });
 
        button7.setLabel("button7");
        button7.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                button7MouseClicked(evt);
            }
        });
 
        button8.setLabel("button8");
        button8.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                button8MouseClicked(evt);
            }
        });
 
        button9.setLabel("button9");
        button9.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                button9MouseClicked(evt);
            }
        });
 
        textField1.setText("textField1");


{{Übung|
        label1.setText("label1");
# Wie ruft man diese Methode auf, wenn man eine Zahl runden möchte?
# Schreiben Sie die Methode rundeAufDreiStellen(). Für fortgeschrittene: RundeAufXStellen()
}}


==Weblinks==
        textField2.setText("textField2");
* Dieses Beispiel stammt aus Kapitel 2 des [http://informatik.zum.de/pieper/ Java Readers]
* vgl. [http://www.torsten-horn.de/techdocs/java-basics.htm Java-Basics]


==Siehe auch==
        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
* [[Java]]
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(25, 25, 25)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(layout.createSequentialGroup()
                        .add(textField2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 340, Short.MAX_VALUE)
                        .addContainerGap())
                    .add(layout.createSequentialGroup()
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(label1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                            .add(layout.createSequentialGroup()
                                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false)
                                    .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup()
                                        .add(button7, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 20, Short.MAX_VALUE)
                                        .add(button8, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                                    .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup()
                                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
                                            .add(button1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                            .add(button4, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                                        .add(20, 20, 20)
                                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
                                            .add(button5, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                            .add(button2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))))
                                .add(29, 29, 29)
                                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                                    .add(button6, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                    .add(button9, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                    .add(button3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                                .add(55, 55, 55))
                            .add(textField1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 275, Short.MAX_VALUE))
                        .add(75, 75, 75))))
        );
 
        layout.linkSize(new java.awt.Component[] {button1, button2, button3, button4, button5, button6, button7, button8, button9}, org.jdesktop.layout.GroupLayout.HORIZONTAL);
 
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .add(label1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(textField2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .add(23, 23, 23)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                    .add(button2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(button1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(button3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .add(10, 10, 10)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(layout.createSequentialGroup()
                        .add(button6, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .add(0, 0, 0))
                    .add(button5, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .add(org.jdesktop.layout.GroupLayout.TRAILING, button4, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                        .add(button7, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED))
                    .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
                        .add(button9, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .add(button8, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(textField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
 
        layout.linkSize(new java.awt.Component[] {button1, button2, button3, button4, button5, button6, button7, button8, button9}, org.jdesktop.layout.GroupLayout.VERTICAL);
 
        pack();
    }// </editor-fold>//GEN-END:initComponents
 
    private void button9MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button9MouseClicked
        if (button9.getLabel()=="_") {
            if (amZug==0) button9.setLabel("0");
            else button9.setLabel("X");
            werteAus(2,2);
        }
        else {
            textField1.setText("Hier ist schon ein Stein!");
        }
    }//GEN-LAST:event_button9MouseClicked
 
    private void button8MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button8MouseClicked
        if (button8.getLabel()=="_") {
            if (amZug==0) button8.setLabel("0");
            else button8.setLabel("X");
            werteAus(1,2);
        }
        else {
            textField1.setText("Hier ist schon ein Stein!");
        }
    }//GEN-LAST:event_button8MouseClicked
 
    private void button7MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button7MouseClicked
        if (button7.getLabel()=="_") {
            if (amZug==0) button7.setLabel("0");
            else button7.setLabel("X");
            werteAus(0,2);
        }
        else {
            textField1.setText("Hier ist schon ein Stein!");
        }
    }//GEN-LAST:event_button7MouseClicked
 
    private void button6MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button6MouseClicked
        if (button6.getLabel()=="_") {
            if (amZug==0) button6.setLabel("0");
            else button6.setLabel("X");
            werteAus(2,1);
        }
        else {
            textField1.setText("Hier ist schon ein Stein!");
        }
    }//GEN-LAST:event_button6MouseClicked
 
    private void button5MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button5MouseClicked
        if (button5.getLabel()=="_") {
            if (amZug==0) button5.setLabel("0");
            else button5.setLabel("X");
            werteAus(1,1);
        }
        else {
            textField1.setText("Hier ist schon ein Stein!");
        }
    }//GEN-LAST:event_button5MouseClicked
 
    private void button4MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button4MouseClicked
        if (button4.getLabel()=="_") {
            if (amZug==0) button4.setLabel("0");
            else button4.setLabel("X");
            werteAus(0,1);
        }
        else {
            textField1.setText("Hier ist schon ein Stein!");
        }
    }//GEN-LAST:event_button4MouseClicked
 
    private void button3MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button3MouseClicked
        if (button3.getLabel()=="_") {
            if (amZug==0) button3.setLabel("0");
            else button3.setLabel("X");
            werteAus(2,0);
        }
        else {
            textField1.setText("Hier ist schon ein Stein!");
        }
    }//GEN-LAST:event_button3MouseClicked
 
    private void button2MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button2MouseClicked
        if (button2.getLabel()=="_") {
            if (amZug==0) button2.setLabel("0");
            else button2.setLabel("X");
            werteAus(1,0);
        }
        else {
            textField1.setText("Hier ist schon ein Stein!");
        }
    }//GEN-LAST:event_button2MouseClicked
 
    private void button1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button1MouseClicked
        if (button1.getLabel()=="_") {
            if (amZug==0) button1.setLabel("0");
            else button1.setLabel("X");
            werteAus(0,0);
        }
        else {
            textField1.setText("Hier ist schon ein Stein!");
        }
    }//GEN-LAST:event_button1MouseClicked
 
 
   
    private void werteAus(int pX, int pY){
        if (amZug==0) {
            amZug=1;
            textField2.setText("X setzt nun.");
        }
        else {
            amZug=0;
            textField2.setText("O ist dran."); 
        }
    }
   
   
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new TicTacGUI().setVisible(true);
            }
        });
    }
   
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private java.awt.Button button1;
    private java.awt.Button button2;
    private java.awt.Button button3;
    private java.awt.Button button4;
    private java.awt.Button button5;
    private java.awt.Button button6;
    private java.awt.Button button7;
    private java.awt.Button button8;
    private java.awt.Button button9;
    private java.awt.Label label1;
    private java.awt.TextField textField1;
    private java.awt.TextField textField2;
    // End of variables declaration//GEN-END:variables
   
}
</java>


[[Kategorie:Informatik]]
[[Kategorie:Java]]
[[Kategorie:Java]]
[[Kategorie:Linksammlung]]
[[Kategorie:Unterrichtsideen/Informatik]]

Version vom 13. März 2007, 06:10 Uhr

Vorlage:Babel-1

Tictactoe.jpg

Variante mit Konsolenein- und ausgabe

Eine einfache TicTacToe-Variante für BlueJ. Ein und Ausgabe in der Konsole.

<java> 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: http://www.wifo.uni-mannheim.de/Java/oop/OOPinJava/kapitel11/StandardEingabe_java.html
   public int liesInt() throws IOException {
       try {
       return Integer.parseInt(in.readLine());
       }
       catch(IOException e) {
         return (-1);
       }
   }

} </java>

<java> 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;
   }

} </java>

Variante mit GUI

Die folgende Variante wurde mit Netbeans-BlueJ erstellt. Sie soll ein Beispiel für den Umgang mit GUIs sein.

<java> /*

* TicTacGUI.java
*
* Created on 12. März 2007, 19:15
*/

/**

*
* @author  ugh
*/

public class TicTacGUI extends javax.swing.JFrame {

   private int amZug;    
   /** Creates new form TicTacGUI */
   public TicTacGUI() {
       initComponents();
       amZug=0;
       textField2.setText("0 startet das Spiel.");
       label1.setText("Tic-Tac-Toe");
       button1.setLabel("_");
       button2.setLabel("_");
       button3.setLabel("_");
       button4.setLabel("_");
       button5.setLabel("_");
       button6.setLabel("_");
       button7.setLabel("_");
       button8.setLabel("_");
       button9.setLabel("_");        
   }
   
   /** This method is called from within the constructor to
    * initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is
    * always regenerated by the Form Editor.
    */
   // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
   private void initComponents() {
       button1 = new java.awt.Button();
       button2 = new java.awt.Button();
       button3 = new java.awt.Button();
       button4 = new java.awt.Button();
       button5 = new java.awt.Button();
       button6 = new java.awt.Button();
       button7 = new java.awt.Button();
       button8 = new java.awt.Button();
       button9 = new java.awt.Button();
       textField1 = new java.awt.TextField();
       label1 = new java.awt.Label();
       textField2 = new java.awt.TextField();
       setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
       button1.setLabel("button1");
       button1.addMouseListener(new java.awt.event.MouseAdapter() {
           public void mouseClicked(java.awt.event.MouseEvent evt) {
               button1MouseClicked(evt);
           }
       });
       button2.setLabel("button2");
       button2.addMouseListener(new java.awt.event.MouseAdapter() {
           public void mouseClicked(java.awt.event.MouseEvent evt) {
               button2MouseClicked(evt);
           }
       });
       button3.setLabel("button3");
       button3.addMouseListener(new java.awt.event.MouseAdapter() {
           public void mouseClicked(java.awt.event.MouseEvent evt) {
               button3MouseClicked(evt);
           }
       });
       button4.setLabel("button4");
       button4.addMouseListener(new java.awt.event.MouseAdapter() {
           public void mouseClicked(java.awt.event.MouseEvent evt) {
               button4MouseClicked(evt);
           }
       });
       button5.setLabel("button5");
       button5.addMouseListener(new java.awt.event.MouseAdapter() {
           public void mouseClicked(java.awt.event.MouseEvent evt) {
               button5MouseClicked(evt);
           }
       });
       button6.setLabel("button6");
       button6.addMouseListener(new java.awt.event.MouseAdapter() {
           public void mouseClicked(java.awt.event.MouseEvent evt) {
               button6MouseClicked(evt);
           }
       });
       button7.setLabel("button7");
       button7.addMouseListener(new java.awt.event.MouseAdapter() {
           public void mouseClicked(java.awt.event.MouseEvent evt) {
               button7MouseClicked(evt);
           }
       });
       button8.setLabel("button8");
       button8.addMouseListener(new java.awt.event.MouseAdapter() {
           public void mouseClicked(java.awt.event.MouseEvent evt) {
               button8MouseClicked(evt);
           }
       });
       button9.setLabel("button9");
       button9.addMouseListener(new java.awt.event.MouseAdapter() {
           public void mouseClicked(java.awt.event.MouseEvent evt) {
               button9MouseClicked(evt);
           }
       });
       textField1.setText("textField1");
       label1.setText("label1");
       textField2.setText("textField2");
       org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
       getContentPane().setLayout(layout);
       layout.setHorizontalGroup(
           layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
           .add(layout.createSequentialGroup()
               .add(25, 25, 25)
               .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                   .add(layout.createSequentialGroup()
                       .add(textField2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 340, Short.MAX_VALUE)
                       .addContainerGap())
                   .add(layout.createSequentialGroup()
                       .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                           .add(label1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                           .add(layout.createSequentialGroup()
                               .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false)
                                   .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup()
                                       .add(button7, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                       .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 20, Short.MAX_VALUE)
                                       .add(button8, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                                   .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup()
                                       .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
                                           .add(button1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                           .add(button4, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                                       .add(20, 20, 20)
                                       .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
                                           .add(button5, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                           .add(button2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))))
                               .add(29, 29, 29)
                               .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                                   .add(button6, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                   .add(button9, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                   .add(button3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                               .add(55, 55, 55))
                           .add(textField1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 275, Short.MAX_VALUE))
                       .add(75, 75, 75))))
       );
       layout.linkSize(new java.awt.Component[] {button1, button2, button3, button4, button5, button6, button7, button8, button9}, org.jdesktop.layout.GroupLayout.HORIZONTAL);
       layout.setVerticalGroup(
           layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
           .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
               .addContainerGap()
               .add(label1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
               .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
               .add(textField2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
               .add(23, 23, 23)
               .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                   .add(button2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                   .add(button1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                   .add(button3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
               .add(10, 10, 10)
               .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                   .add(layout.createSequentialGroup()
                       .add(button6, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                       .add(0, 0, 0))
                   .add(button5, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                   .add(org.jdesktop.layout.GroupLayout.TRAILING, button4, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
               .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
               .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                   .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                       .add(button7, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                       .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED))
                   .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
                       .add(button9, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                       .add(button8, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
               .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
               .add(textField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
               .addContainerGap())
       );
       layout.linkSize(new java.awt.Component[] {button1, button2, button3, button4, button5, button6, button7, button8, button9}, org.jdesktop.layout.GroupLayout.VERTICAL);
       pack();
   }// </editor-fold>//GEN-END:initComponents
   private void button9MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button9MouseClicked
       if (button9.getLabel()=="_") {
           if (amZug==0) button9.setLabel("0");
           else button9.setLabel("X");
           werteAus(2,2);
       }
       else {
           textField1.setText("Hier ist schon ein Stein!");
       }
   }//GEN-LAST:event_button9MouseClicked
   private void button8MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button8MouseClicked
       if (button8.getLabel()=="_") {
           if (amZug==0) button8.setLabel("0");
           else button8.setLabel("X");
           werteAus(1,2);
       }
       else {
           textField1.setText("Hier ist schon ein Stein!");
       }
   }//GEN-LAST:event_button8MouseClicked
   private void button7MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button7MouseClicked
       if (button7.getLabel()=="_") {
           if (amZug==0) button7.setLabel("0");
           else button7.setLabel("X");
           werteAus(0,2);
       }
       else {
           textField1.setText("Hier ist schon ein Stein!");
       }
   }//GEN-LAST:event_button7MouseClicked
   private void button6MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button6MouseClicked
       if (button6.getLabel()=="_") {
           if (amZug==0) button6.setLabel("0");
           else button6.setLabel("X");
           werteAus(2,1);
       }
       else {
           textField1.setText("Hier ist schon ein Stein!");
       }
   }//GEN-LAST:event_button6MouseClicked
   private void button5MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button5MouseClicked
       if (button5.getLabel()=="_") {
           if (amZug==0) button5.setLabel("0");
           else button5.setLabel("X");
           werteAus(1,1);
       }
       else {
           textField1.setText("Hier ist schon ein Stein!");
       }
   }//GEN-LAST:event_button5MouseClicked
   private void button4MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button4MouseClicked
       if (button4.getLabel()=="_") {
           if (amZug==0) button4.setLabel("0");
           else button4.setLabel("X");
           werteAus(0,1);
       }
       else {
           textField1.setText("Hier ist schon ein Stein!");
       }
   }//GEN-LAST:event_button4MouseClicked
   private void button3MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button3MouseClicked
       if (button3.getLabel()=="_") {
           if (amZug==0) button3.setLabel("0");
           else button3.setLabel("X");
           werteAus(2,0);
       }
       else {
           textField1.setText("Hier ist schon ein Stein!");
       }
   }//GEN-LAST:event_button3MouseClicked
   private void button2MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button2MouseClicked
       if (button2.getLabel()=="_") {
           if (amZug==0) button2.setLabel("0");
           else button2.setLabel("X");
           werteAus(1,0);
       }
       else {
           textField1.setText("Hier ist schon ein Stein!");
       }
   }//GEN-LAST:event_button2MouseClicked
   private void button1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button1MouseClicked
       if (button1.getLabel()=="_") {
           if (amZug==0) button1.setLabel("0");
           else button1.setLabel("X");
           werteAus(0,0);
       }
       else {
           textField1.setText("Hier ist schon ein Stein!");
       }
   }//GEN-LAST:event_button1MouseClicked


   private void werteAus(int pX, int pY){
       if (amZug==0) {
           amZug=1;
           textField2.setText("X setzt nun.");
       }
       else {
           amZug=0;
           textField2.setText("O ist dran.");   
       }
   }
   
   
   /**
    * @param args the command line arguments
    */
   public static void main(String args[]) {
       java.awt.EventQueue.invokeLater(new Runnable() {
           public void run() {
               new TicTacGUI().setVisible(true);
           }
       });
   }
   
   // Variables declaration - do not modify//GEN-BEGIN:variables
   private java.awt.Button button1;
   private java.awt.Button button2;
   private java.awt.Button button3;
   private java.awt.Button button4;
   private java.awt.Button button5;
   private java.awt.Button button6;
   private java.awt.Button button7;
   private java.awt.Button button8;
   private java.awt.Button button9;
   private java.awt.Label label1;
   private java.awt.TextField textField1;
   private java.awt.TextField textField2;
   // End of variables declaration//GEN-END:variables
   

} </java>