tictactoe spiel

enesss

Mitglied
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:

temi

Top Contributor
Bitte verwende die Code-Tags (das </> Symbol im Editor ganz links). So kann man das nicht gut lesen und es kommt zu Fehlern in der Darstellung. Du kannst deinen Beitrag ggf. noch editieren.
 

Hansen_07

Bekanntes Mitglied
Warum eigentlich gefühlt jeden Tag ein neuer Thread zum Thema TicTacToe?

Und bitte formatiere deinen Beitrag mal sauber (auch mit Code Tags). Das kann keiner lesen..
 

temi

Top Contributor
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
Ob deine Methoden richtig sind, musst du selbst rausfinden. Ansonsten könntest du eine neue Klasse z. B. Main erstellen und darin eine main-Methode in der du Instanzen deiner Klasse erstellst. Die main-Methode ist der Einstiegspunkt für dein Programm.
Java:
public class Main {
 
    public static void main(String[] args) {
     
        PlayBoard board = new PlayBoard();
     
        // jetzt kannst du deine Methoden über die Instanz aufrufen board.xxx()
    }
}

Vermutlich wirst du noch eine weitere Klasse brauche, die die Eingaben der Benutzers und die Ausgabe auf der Konsole übernimmt. Das sollte immer von der eigentlichen Logik getrennt bleiben.

Es ist aber durchaus sinnvoll, zunächst deine Methoden gut zu testen, indem du sie mit Daten aufrufst und prüfst, ob das Ergebnis korrekt ist.
 

enesss

Mitglied
Ich möchte jetzt das Spiel noch erweitern, dass ein Spieler gegen den Computer spielt. Dafür würde ich eine neue Klasse erstellen. Die Methode in dieser Klasse, soll den Index des Feldes für den nächsten Zug zurückgeben (also der Zug vom Computer). Die Methode soll wie folgt vorgehen:
1. Wenn der Spieler durch das Setzen auf ein Feld gewinnen kann, wird der Index dieses Feldes zurückgegeben
2. Kann der Spieler durch das Setzen auf ein Feld direkt den Sieg des Gegners im darauffolgenden Zug verhindern (Kette aus zwei Zeichen und einem freien Feld unterbrechen, indem selbst auf das freie Feld gesetzt wird), wird der Index dieses Feldes zurückgegeben.
3. Ist die Mitte frei, wird der Index der Mitte (4) zurückgegeben.
4.Ist eine Ecke frei, wird der Index der Ecke (0, 2, 6, 8) zurückgegeben.
5.Gebe den niedrigsten Index eines freien Feldes zurück.

Wenn es mehrere Möglichkeiten für eine Regel gibt, soll der niedrigste Index zurückgegeben werden.
Wie kann ich da vorgehen?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
M Array und Objektorientierung? - TicTacToe Spiel Java Basics - Anfänger-Themen 43
P Ein einfaches Spiel: TicTacToe. Fehler und Vorschläge Java Basics - Anfänger-Themen 3
K TicTacToe belegtes feld nicht neu besetzbar Java Basics - Anfänger-Themen 1
K TicTacToe belegtes Feld nicht neu besetzbar Java Basics - Anfänger-Themen 3
TicTacToe Java Basics - Anfänger-Themen 6
C TicTacToe Java Basics - Anfänger-Themen 2
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
A Überprüfung für unentschieden in TicTacToe Java Basics - Anfänger-Themen 10
A Überprüfung in TicTacToe Java Basics - Anfänger-Themen 5
A TicTacToe Java Basics - Anfänger-Themen 8
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
K Fehler beim Programmieren von TicTacToe Java Basics - Anfänger-Themen 12
J TicTacToe Java Basics - Anfänger-Themen 2
A TicTacToe funktioniert bis auf "schiefer" Sieg Java Basics - Anfänger-Themen 6
shiroX Input/Output TicTacToe-Savegame Java Basics - Anfänger-Themen 1
shiroX Methoden Mögliche Spielstände bei TicTacToe Java Basics - Anfänger-Themen 14
P TicTacToe Problem mit Win Methode Java Basics - Anfänger-Themen 4
Z TicTacToe mit Array Java Basics - Anfänger-Themen 6
T TicTacToe Spielfeld Java Basics - Anfänger-Themen 7
B TicTacToe Java Basics - Anfänger-Themen 2
S TicTacToe Java Basics - Anfänger-Themen 4
I TicTacToe blöde KI Java Basics - Anfänger-Themen 2
I Fehler bei TicTacToe Java Basics - Anfänger-Themen 108
G TicTacToe KI Java Basics - Anfänger-Themen 15
C Problem TicTacToe Java Basics - Anfänger-Themen 6
P 3D TicTacToe - Unentschieden Java Basics - Anfänger-Themen 5
G Tictactoe Java Basics - Anfänger-Themen 9
B TicTacToe Programmieren Java Basics - Anfänger-Themen 2
M Einfaches TicTacToe Programm Java Basics - Anfänger-Themen 19
H TicTacToe Fehler beim Compilieren Java Basics - Anfänger-Themen 7
cizzo TicTacToe Java Basics - Anfänger-Themen 6
W TicTacToe - Porblem mit dem Code.. Java Basics - Anfänger-Themen 5
H Hilfe bei TicTacToe mit jEdit Java Basics - Anfänger-Themen 7
0 TicTacToe, Problem mit den Checkbox-Aktionen Java Basics - Anfänger-Themen 6
N brauche hilfe zu tictactoe Java Basics - Anfänger-Themen 2
kulturfenster Problem bei TicTacToe Java Basics - Anfänger-Themen 11
H TicTacToe: Zeit zwischen Zügen lassen Java Basics - Anfänger-Themen 9
M TicTacToe Java Basics - Anfänger-Themen 7
H TicTacToe-geeignete Klassenhierarchie Java Basics - Anfänger-Themen 3
G Hilfe bei TicTacToe Java Basics - Anfänger-Themen 2
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
I Threads Spiel gol Java Basics - Anfänger-Themen 6
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
Ekooekoo Hilfe spiel Java Basics - Anfänger-Themen 5
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
Kennewick Basketball Spiel Ergebnisse Java Basics - Anfänger-Themen 11
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
R Hangman-Spiel-zufälliges Wort ermitteln Java Basics - Anfänger-Themen 4
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
I Simples Risiko-Spiel Java Basics - Anfänger-Themen 5
Hallolu Pong-Spiel: Schläger schneller werden lassen Java Basics - Anfänger-Themen 9
M Java Spiel wie Wer wird Millionär Java Basics - Anfänger-Themen 1
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
C Java Spiel Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
B Memory Spiel Java Basics - Anfänger-Themen 29
J Memory-Spiel Aktivierung der Methode mit Timer Java Basics - Anfänger-Themen 44
Kamy Ein einfaches "Vier Gewinnt" Spiel für Anfängerin Java Basics - Anfänger-Themen 51
A Breakout-Spiel , Ball mit Platten abprallen lassen Java Basics - Anfänger-Themen 1
S Spiel programmieren mit Java Java Basics - Anfänger-Themen 11
Olis Erste Schritte Simples Memory Spiel möglich? Java Basics - Anfänger-Themen 1
J Spiel mit Button klick starten Java Basics - Anfänger-Themen 9
C Rekursives Backtracking beim Spiel Peg Java Basics - Anfänger-Themen 22
M Spiel programmieren Java Basics - Anfänger-Themen 16
Spencer Reid Feedback zu kleinem Spiel Java Basics - Anfänger-Themen 4
kokojamboo92 Spiel programmieren Java Basics - Anfänger-Themen 1
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
I Spiel Java Basics - Anfänger-Themen 34
H ein einfaches Tic Tac Toe Spiel Java Basics - Anfänger-Themen 1
I Spiel programmieren. Java Basics - Anfänger-Themen 16
B Hilfe bei Escape - Spiel Java Basics - Anfänger-Themen 6
S Java-Spiel Java Basics - Anfänger-Themen 2
M Nim-Spiel geht in den negativen Bereich Java Basics - Anfänger-Themen 1
K Klassen Registrierungsseite für ein Spiel Java Basics - Anfänger-Themen 6
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 2
M Brauche Tipps für ein Spiel Java Basics - Anfänger-Themen 4
S Probleme mit GamGrid Spiel-Erstellung => Actor reagiert nicht auf Tastatur Java Basics - Anfänger-Themen 2
Mxxxt Mosaik Spiel - Steuerpanel wird nicht angezeigt Java Basics - Anfänger-Themen 5
M Erste Schritte Zufallszahl Spiel Problem Java Basics - Anfänger-Themen 7
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2
H Spiel Kniffel: Gesamtes Array untersuchen. Java Basics - Anfänger-Themen 15
Tacofan Hangman als fertiges Spiel Java Basics - Anfänger-Themen 7
C Klassen Sudoku-Spiel Werte werden nicht gesetzt Java Basics - Anfänger-Themen 4
K Kleines Spiel auf Java programmieren Java Basics - Anfänger-Themen 2
W Tic Tac Toe Spiel ohne Arrays Java Basics - Anfänger-Themen 7
S Im objektorientiertem "Spiel" kämpfen Java Basics - Anfänger-Themen 3
I Klassen Umsetzungsfrage zu Spiel "Zuul" Java Basics - Anfänger-Themen 3
F Mastermind Spiel Java Basics - Anfänger-Themen 9
H Liste ausgeben (Spiel Hey Fisch (software-challenge) ändern Anzahl Fische) Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben