Import klappt nicht

Darkherobrine9

Mitglied
Hallo, ich wollte ein 4 gewinnt spiel in java coden (mit replit.com) aber egal was ich mache es kommen nur error
Datei main:

Java:
import java.util.Scanner;
import FourInARow;


public class Main {
    public static void main(String[] args) {
        // ...
        FourInARow game = new FourInARow();
        game.run();
        // ...
    }

Datei FourInARow:

Java:
import java.util.Scanner;
public class FourInARow {
    public void run() {
        Scanner scanner = new Scanner(System.in);
        char[][] board = new char[6][7]; // Spielbrett
        char currentPlayer = 'X'; // Der aktuelle Spieler, der am Zug ist
        boolean running = true; // Gibt an, ob das Spiel läuft
        int row; // Die Zeile, in die der Spielstein fallen soll
        int column; // Die Spalte, in die der Spielstein fallen soll

        // Initialisiere das Spielbrett
        for (int i = 0; i < board.length; i++) {
            for (int j = 0; j < board[i].length; j++) {
                board[i][j] = ' ';
            }
        }

        while (running) {
            // Zeichne das Spielbrett
            drawBoard(board);

            // Frage den Spieler nach seinem Zug
            System.out.println("Spieler " + currentPlayer + ", wähle eine Spalte (1-7):");
            column = scanner.nextInt() - 1;

            // Versuche, den Spielstein in die angegebene Spalte zu platzieren
            row = placePiece(board, currentPlayer, column);

            // Prüfe, ob der Spieler gewonnen hat
            if (checkWin(board, currentPlayer, row, column)) {
                drawBoard(board); // Zeichne das Spielbrett
                System.out.println("Spieler " + currentPlayer + " hat gewonnen!");
                running = false;
            }

            // Wechsle zum nächsten Spieler
            if (currentPlayer == 'X') {
                currentPlayer = 'O';
            } else {
                currentPlayer = 'X';
            }
        }
    }

    // Zeichnet das Spielbrett
    public void drawBoard(char[][] board) {
        for (int i = 0; i < board.length; i++) {
            for (int j = 0; j < board[i].length; j++) {
                System.out.print("|" + board[i][j]);
            }
            System.out.println("|");
        }
    }

    // Versucht, den Spielstein in die angegebene Spalte zu platzieren
    public int placePiece(char[][] board, char player, int column) {
        // Prüfe, ob die Spalte voll ist
        if (board[0][column] != ' ') {
            System.out.println("Die Spalte ist voll. Wähle eine andere.");
            return -1;
        }

        // Suche die nächste freie Zeile in der Spalte und platziere den Spielstein dort
        for (int i = board.length - 1; i >= 0; i--) {
            if (board[i][column] == ' ') {
                board[i][column] = player;
                return i;
            }
        }

        return -1;
    }

    // Prüft, ob der angegebene Spieler gewonnen hat
    public boolean checkWin(char[][] board, char player, int row, int column) {
        // Prüfe, ob es vier Spielsteine in einer Reihe gibt
        if (checkRowWin(board, player, row) || checkColumnWin(board, player, column) || checkDiagonalWin(board, player, row, column)) {
            return true;
        }

        return false;
    }
    // Prüft, ob es vier Spielsteine in einer Reihe gibt
    public boolean checkRowWin(char[][] board, char player, int row) {
        int consecutive = 0;
        for (int i = 0; i < board[row].length; i++) {
            if (board[row][i] == player) {
                consecutive++;
            } else {
                consecutive = 0;
            }
            if (consecutive == 4) {
                return true;
            }
        }
        return false;
    }

    // Prüft, ob es vier Spielsteine in einer Spalte gibt
    public boolean checkColumnWin(char[][] board, char player, int column) {
        int consecutive = 0;
        for (int i = 0; i < board.length; i++) {
            if (board[i][column] == player) {
                consecutive++;
            } else {
                consecutive = 0;
            }
            if (consecutive == 4) {
                return true;
            }
        }
        return false;
    }

    // Prüft, ob es vier Spielsteine auf einer Diagonalen gibt
    public boolean checkDiagonalWin(char[][] board, char player, int row, int column) {
        int consecutive = 0;

        // Prüfe obere Diagonale
        for (int i = row, j = column; i >= 0 && j < board[i].length; i--, j++) {
            if (board[i][j] == player) {
                consecutive++;
            } else {
                consecutive = 0;
            }
            if (consecutive == 4) {
                return true;
            }
        }

        // Prüfe untere Diagonale
        consecutive = 0;
        for (int i = row, j = column; i < board.length && j < board[i].length; i++, j++) {
            if (board[i][j] == player) {
                consecutive++;
            } else {
                consecutive = 0;
            }
            if (consecutive == 4) {
                return true;
            }
        }

        return false;
    }
}
 
es kommt der fehler:
sh -c javac -classpath .:target/dependency/* -d . $(find . -type f -name '*.java')
./Main.java:2: error: '.' expected
import FourInARow;
^
./Main.java:11: error: reached end of file while parsing
}
^
2 errors
exit status 1

beim start
 
Der import ist so auch unsinnig. Die beiden Klassen sind im gleichen Package und daher ist kein Import notwendig.
 
Und die Logik zur Prüfung der Diagonalen solltest Du noch einmal prüfen. Das sieht so nicht korrekt aus. Du prüfst ja derzeit nur die Diagonale startend von dem zulestz eingefügten Element und du prüfst nur nach rechts und links unten.

Aber das kann natürlich auch etwas sein, das miotten drin oder unten hintzugefügt wurde. Also als Beispiel:

Code:
      o
      #
  o # #
o # # #
1 2 3 4



      o
    o #
  o # #
  # # #
1 2 3 4

In den Beispielen sind # beliebige Steine und o relevante Steine eines Spielers.
Im ersten Beispiel kann ja der Spiele o an Stelle 3 sein Stein einwerfen und hat damit eine Diagonale von 4 Steinen
Im zweiten Beispiel kann er auf 1 einwerfen und bekommt die Diagonale zum Sieg.

Du müsstest Dir also überlegen, was Du genau prüfen musst. (Tipp: Es muss nur der Startpunkt verändert werden der Schleifen - dann würde es klappen - so ich das jetzt richtig gesehen habe ... war halt nur ein kurzer Blick auf den Code.)
 

Neue Themen


Zurück
Oben