Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
// this is classic 9x9 connect 4 // you can place you token anywhere on the board // get 4 in a row to win // have fun
import java.util.Scanner;
public class Connect4_MKII { public static Scanner in = new Scanner(System.in); public static String[][] board = new String[9][9]; public static boolean player = true; public static String p1 = ""; public static String p2 = "";
public static void main(String[] args) {
// checks for custom play
setPlay();
// sets full board to " "
for(int row = 0; row < board.length; row++)
for(int column = 0; column < board[row].length; column++)
board[row][column] = " ";
// prints an empty board for reference
printBoard();
game:
while(true) {
// 2 players
for(int n = 0; n < 2; n++) {
// gets a new play
updateBoard(newRow(), newColumn());
// prints the new board updated with the newest play
printBoard();
// checks if there is a winner
if(checkForWinner()) {
if(player)
System.out.println("Player 1 wins!");
else
System.out.println("Player 2 wins!");
break game;
}
// checks for a draw
if(checkDraw()){
System.out.println("You're all bad at this");
break game;
}
// switches the players
player = !player;
}
}
}
public static boolean checkForWinner() {
String play = " ";
boolean isWin = false;
outerHorizontal:
for(int a = 0; a < board.length; a++) {
for(int b = 0; b < board[a].length - 3; b++) {
play = board[a][b];
if(play == " ")
continue;
if(board[a][b + 1] == play && board[a][b + 2] == play && board[a][b + 3] == play) {
isWin = true;
break outerHorizontal;
}
}
}
outerVertical:
for(int x = 0; x < board.length - 3; x++) {
for(int y = 0; y < board[x].length; y++) {
play = board[x][y];
if(play == " ")
continue;
if(board[x + 1][y] == play && board[x + 2][y] == play && board[x + 3][y] == play) {
isWin = true;
break outerVertical;
}
}
}
outerLeftDiagonal:
for(int p = 0; p < board.length - 3; p++) {
for(int o = 0; o < board[p].length - 3; o++) {
play = board[p][o];
if(play == " ")
continue;
if(board[p + 1][o + 1] == play && board[p + 2][o + 2] == play && board[p + 3][o + 3] == play) {
isWin = true;
break outerLeftDiagonal;
}
}
}
outerRightDiagonal:
for(int u = 0; u < board.length - 3; u++) {
for(int i = 3; i < board[u].length; i++) {
play = board[u][i];
if(play == " ")
continue;
if(board[u + 1][i - 1] == play && board[u + 2][i - 2] == play && board[u + 3][i - 3] == play) {
isWin = true;
break outerRightDiagonal;
}
}
}
return isWin;
}
public static boolean checkDraw() {
for(int n = 0; n < board.length; n++) {
for(int a = 0; a < board[n].length; a++) {
if(board[n][a] == " ")
return false;
}
}
return true;
}
public static void updateBoard(int row, int column) {
boolean notFinished = true;
if(board[row][column] == " ") {
if(player) {
board[row][column] = p1;
} else {
board[row][column] = p2;
}
notFinished = false;
}
if(notFinished) {
System.out.println("INVALID! Please try again.");
updateBoard(newRow(), newColumn());
}
}
public static int newRow() {
System.out.print("What row? ");
int row = in.nextInt();
while(row < -4 || row > 4) {
System.out.println("Invalid, Try again");
System.out.print("What row? ");
row = in.nextInt();
}
return row + 4;
}
public static int newColumn() {
System.out.print("What column? ");
int column = in.nextInt();
while(column < -4 || column > 4) {
System.out.println("Invalid, Try again");
System.out.print("What column? ");
column = in.nextInt();
}
return column + 4;
}
public static void printBoard() {
System.out.println(" -4 -3 -2 -1 0 1 2 3 4");
System.out.println(" +-----+-----+-----+-----+-----+-----+-----+-----+-----+");
for(int n = board.length - 1; n >= 0; n--) {
for(int x = 0; x < board[n].length; x++) {
System.out.print(" | " + board[n][x]);
}
System.out.println(" | " + (n - 4));
System.out.println(" +-----+-----+-----+-----+-----+-----+-----+-----+-----+");
}
}
public static void setPlay() {
if(p1 == "")
p1 = "O";
if(p2 == "")
p2 = "X";
}
}
Open Source Your Knowledge: become a Contributor and help others learn. Create New Content