# Tic Tac Toe Programmierung



## Muni1997 (29. Nov 2016)

Hallo!
Ich soll als Hausaufgabe ein Tic Tac Toe Spiel programmieren, jedoch weiß ich gar nicht wie ich vorgehen soll..

```
String [][] board = new String [3][3];
private static String [][] placeMark(String[][] board){
  return board;
}

private static boolean cellIsValid(String[][] board, int row, int column){
  return  true;
}

private static void printBoard(String[][] board){
 
}

private static boolean hasWon(String[][] board){
  return true;
}
```
Diese 4 Methoden sollen wir benutzen.

Für das Programm soll ein Spieler die Zeilennummer und die Spalten nummer mit der Tastatur ausgeben

```
1 2 3
A_/_/_/
B_/_/_/
C_/_/_/
```
Quasi so, dann wenn spieler 1 dran ist gibt er quasi erst zeile: A und spalte: 1 ein zum Beispiel
Zum markieren werden X und O benutzt

Ich hoffe mir kann geholfen werden!


----------



## Flown (29. Nov 2016)

Das nächste mal bitte deinen Code in Code-Tags posten: [code=java]//JAVA CODE HERE [/code]


----------



## Robat (29. Nov 2016)

Also hier mal ein Paar Denkanstöße meinerseits:

*private static String[][] placeMark(String[][] board);*

- *OUT*: "Bitte Zeile und Spalte eingeben"  `System.out.println("..");`
- *IN*: Zeile, Spalte  `Scanner s = new Scanner(System.in);`
- *Prüfen *ob die Eingabe gültig ist (siehe cellIsValid(String[][] board, int row, int column) `if(cellIsValid(board, 1, 1)) {...}`
- *WENN *Eingabe nicht gültig ist, Fehlermeldung ausgeben und bei *OUT: "*Bitte Zeile und Spalte..." wieder anfangen.
- *SONST *prüfen welcher Spieler dran ist (ggf. mit einer boolean Variable isPlayerOnesTurn) `if(isPlayerOnesTurn) { .. } else {..}`
*- *Wenn Zeichen erfolgreich gesetzt wurde:
    - *OUT: *board `printBoard(board);`
    - *Prüfen *ob ein Spieler gewonnen hat `if(hasWon(board)) { ... }`
    - *Wenn JA, *erneut anfangen / oder Abbrechen (je nach Aufgabestellung
    -* Wenn NEIN, *weiter bei *OUT: "*Bitte Zeile und Spalte..."

-----

*private static boolean cellIsValid(String[][] board, int row, int column);*

- *WENN *das Array an der Stelle [row][column] bereits ein X oder O hat
*- OUT: *Fehlermeldung - weiter bei *OUT*: "Bitte Zeile und Spalte eingeben"
   - *return false;*
- *SONST return true;

----

private static void printBoard(String[][] board);
*
Die Ausgabe eines 2D-Arrays in Java machst du am besten mit 2 ineinander geschachtelten for-Schleifen, wo bei die 1. For-Schleife die Zeilen angibt und die 2. for-Schleife die Spalten
Bsp:

```
for(int i = 0; i < array.length; i++)
{
    for(int j = 0; j < array[i].length; j++)
    {
         .....
    }
}
```
------

*private static boolean hasWon(String[][] board);*

Alle Fälle prüfen, ob ein Spieler gewonnen hat:
- Diagonalen
- Zeilen, Spalten in jeglicher Kombination

*-WENN *einer der Fälle eintritt *return true
- SONST return false
*
PS: Gibt sicherlich auch noch andere Lösungswege und dieser hier ist auch nicht final. Es soll nur als Anregung dienen!

Gruß
Robert


----------



## Muni1997 (29. Nov 2016)

Danke für die schnelle Antwort!!

Hätte jemand schon dazu einen fertigen Sourcecode, an den ich mich orientieren kann?


----------



## Robat (29. Nov 2016)

Muni1997 hat gesagt.:


> Hätte jemand schon dazu einen fertigen Sourcecode, an den ich mich orientieren kann?


Den könnte ich dir auch geben. Dann solltest du den Post aber hier ( http://www.java-forum.org/forum/private-stellangebote-und-stellensuche-von-usern.97/ ) noch mal posten und ein wenig Geld bereit legen .. ein wenig Eigeninitiative solltest du schon in einem Forum an den Tag legen.. oben steht die (komplette) Logik deiner Methoden.. fang doch erstmal an


----------

