ADD file via upload

main
pf4fw5i2c 1 year ago
parent 5ab370a381
commit 2cb46b9a38

@ -0,0 +1,141 @@
import java.util.Scanner;
public class GomokuGame {
private static final int BOARD_SIZE = 15;
private static final char EMPTY = '.';
private static final char PLAYER1_SYMBOL = 'X';
private static final char PLAYER2_SYMBOL = 'O';
private char[][] board;
private char currentPlayer;
public GomokuGame() {
board = new char[BOARD_SIZE][BOARD_SIZE];
currentPlayer = PLAYER1_SYMBOL;
initializeBoard();
}
private void initializeBoard() {
for (int i = 0; i < BOARD_SIZE; i++) {
for (int j = 0; j < BOARD_SIZE; j++) {
board[i][j] = EMPTY;
}
}
}
private void printBoard() {
for (int i = 0; i < BOARD_SIZE; i++) {
for (int j = 0; j < BOARD_SIZE; j++) {
System.out.print(board[i][j] + " ");
}
System.out.println();
}
}
private boolean isValidMove(int row, int col) {
return row >= 0 && row < BOARD_SIZE && col >= 0 && col < BOARD_SIZE && board[row][col] == EMPTY;
}
private boolean hasWon(int row, int col) {
return hasRowWin(row) || hasColumnWin(col) || hasDiagonalWin(row, col) || hasAntiDiagonalWin(row, col);
}
private boolean hasRowWin(int row) {
int count = 0;
for (int j = 0; j < BOARD_SIZE; j++) {
if (board[row][j] == currentPlayer) {
count++;
if (count == 5) {
return true;
}
} else {
count = 0;
}
}
return false;
}
private boolean hasColumnWin(int col) {
int count = 0;
for (int i = 0; i < BOARD_SIZE; i++) {
if (board[i][col] == currentPlayer) {
count++;
if (count == 5) {
return true;
}
} else {
count = 0;
}
}
return false;
}
private boolean hasDiagonalWin(int row, int col) {
int startRow = Math.max(0, row - 4);
int startCol = Math.max(0, col - 4);
int endRow = Math.min(BOARD_SIZE - 1, row + 4);
int endCol = Math.min(BOARD_SIZE - 1, col + 4);
int count = 0;
for (int i = startRow, j = startCol; i <= endRow && j <= endCol; i++, j++) {
if (board[i][j] == currentPlayer) {
count++;
if (count == 5) {
return true;
}
} else {
count = 0;
}
}
return false;
}
private boolean hasAntiDiagonalWin(int row, int col) {
int startRow = Math.min(BOARD_SIZE - 1, row + 4);
int startCol = Math.max(0, col - 4);
int endRow = Math.max(0, row - 4);
int endCol = Math.min(BOARD_SIZE - 1, col + 4);
int count = 0;
for (int i = startRow, j = startCol; i >= endRow && j <= endCol; i--, j++) {
if (board[i][j] == currentPlayer) {
count++;
if (count == 5) {
return true;
}
} else {
count = 0;
}
}
return false;
}
public void playGame() {
Scanner scanner = new Scanner(System.in);
boolean gameOver = false;
while (!gameOver) {
System.out.println("Current board:");
printBoard();
System.out.println("Player " + currentPlayer + ", enter row and column (0-14):");
int row = scanner.nextInt();
int col = scanner.nextInt();
if (isValidMove(row, col)) {
board[row][col] = currentPlayer;
if (hasWon(row, col)) {
System.out.println("Player " + currentPlayer + " wins!");
gameOver = true;
} else {
currentPlayer = (currentPlayer == PLAYER1_SYMBOL) ? PLAYER2_SYMBOL : PLAYER1_SYMBOL;
}
} else {
System.out.println("Invalid move. Please choose an empty spot.");
}
}
scanner.close();
}
public static void main(String[] args) {
GomokuGame game = new GomokuGame();
game.playGame();
}
}
Loading…
Cancel
Save