ich möchte ein Tiktaktoe Spiel erstellen. Unten seht ihr meine Klasse mit meinen Methoden. Nun möchte ich eine weiter klasse erstellen, die das Spiel startet. ich komme, aber nicht weiter und weiß leider nicht wie ich weitervorgehen muss und ob meine Methode richtig sind
Java:
package TicTacToe;
public class PlayBoard {
// Das Spielfeld besteht aus einem 3x3-Array von Zeichen
public char[][] field = new char[3][3];
// Konstruktor, der das Spielfeld initialisiert
public PlayBoard() {
// Alle Felder auf '-' setzen, um anzuzeigen, dass sie noch frei sind
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
field[i][j] = '-';
}
}
}
// Überprüft, ob das Feld mit dem angegebenen Index frei ist
// Index muss zwischen 0 und 8 liegen
public boolean isEmpty(int index) {
// Wandle den Index in x- und y-Koordinate um
int x = index % 3;
int y = index / 3;
return field[x][y] == '-';
}
// Überprüft, ob das Spielfeld voll ist
public boolean isFull() {
// Gehe alle Felder durch und überprüfe, ob sie frei sind
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (field[i][j] == '-') {
return false;
}
}
}
return true;
}
// Überprüft, ob ein Spieler gewonnen hat
public boolean hasWon(String[][] board, String player) {
// Überprüfen Sie jede Zeile auf eine Gewinnkombination
for (int i = 0; i < 3; i++) {
if (board[i][0].equals(player) && board[i][1].equals(player) && board[i][2].equals(player)) {
return true;
}
}
// Überprüfen Sie jede Spalte auf eine Gewinnkombination
for (int j = 0; j < 3; j++) {
if (board[0][j].equals(player) && board[1][j].equals(player) && board[2][j].equals(player)) {
return true;
}
}
// Überprüfen Sie die Diagonalen auf eine Gewinnkombination
if (board[0][0].equals(player) && board[1][1].equals(player) && board[2][2].equals(player)) {
return true;
}
if (board[0][2].equals(player) && board[1][1].equals(player) && board[2][0].equals(player)) {
return true;
}
// Keine Gewinnkombination gefunden
return false;
}
private char[] board;
public boolean isFull(String[][] board) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (board[i][j] == null || board[i][j].isEmpty()) {
return false;
}
}
}
return true;
}
public void placePlayerSign(int index, char playerSign) {
// Überprüfe, ob der übergebene Index gültig ist
if (index < 0 || index > 8) {
throw new IllegalArgumentException("Ungültiger Index. Bitte einen Index zwischen 0 und 8 angeben.");
}
// Überprüfe, ob das Feld an der angegebenen Stelle bereits besetzt ist
if (board[index] != '-') {
throw new IllegalArgumentException("Feld ist bereits besetzt. Bitte wähle ein anderes Feld.");
}
// Setze das Zeichen des Spielers auf das ausgewählte Feld
board[index] = playerSign;
}
public static String getTicTacToeString(char[][] board) {
// Überprüfen, ob das Spielfeld gültig ist
if (board == null || board.length != 3 || board[0].length != 3) {
return "";
}
// Initialisieren der Zeichenkette, die das Spielfeld darstellt
StringBuilder sb = new StringBuilder();
// Iterieren über jede Zeile des Spielfelds
for (int i = 0; i < 3; i++) {
// Iterieren über jedes Zeichen in der Zeile
for (int j = 0; j < 3; j++) {
sb.append(board[i][j]);
}
sb.append('\n'); // Zeilenumbruch am Ende der Zeile hinzufügen
}
return sb.toString(); // Zeichenkette zurückgeben
}
public int getWinningMove(int player, int[] board) {
// Überprüfe jedes Feld im Spielfeld
for (int i = 0; i < board.length; i++) {
// Überspringe belegte Felder
if (board[i] != 0) continue;
// Versuche, das Feld zu besetzen
board[i] = player;
// Überprüfe, ob der Spieler gewonnen hat
if (hasWon(player, board)) {
// Rücke das Feld zurück und gib den Index zurück
board[i] = 0;
return i;
}
// Rücke das Feld zurück
board[i] = 0;
}
// Kein gewinnender Zug gefunden, gib -1 zurück
return -1;
}
private boolean hasWon(int player, int[] board2) {
// TODO Auto-generated method stub
return false;
}
}
Zuletzt bearbeitet: