Hallo, ich wollte ein 4 gewinnt spiel in java coden (mit replit.com) aber egal was ich mache es kommen nur error
Datei main:
Datei FourInARow:
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;
}
}