I created this game in Java:
import java.util.Scanner;
public class TicTacToe {
public static Scanner input = new Scanner(System.in);
public static String getName(int noPlayer) {
System.out.print("Enter name of Player " + noPlayer + ": ");
return input.next();
}
public static int getMove(String board[], String player) {
printBoard(board);
System.out.print("Enter move for " + player + ": ");
int move = input.nextInt();
while (moveTaken(board, move)) {
System.out.println("Move taken.");
System.out.print("Enter move for " + player + ": ");
move = input.nextInt();
}
return move;
}
public static String gameResult(String board[]) {
final int WINNING_COMBOS[][] = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8},
{0, 3, 6}, {1, 4, 7}, {2, 5, 8},
{0, 4, 8}, {2, 4, 6}};
for (int[] i: WINNING_COMBOS) {
if (board[i[0]].equals(board[i[1]]) && board[i[0]].equals(board[i[2]]) && board[i[1]].equals(board[i[2]])) {
if (board[i[0]].equals("O")) {
return "O wins";
}
else {
return "X wins";
}
}
}
if (!board[0].equals("0") && !board[1].equals("1") && !board[2].equals("2") &&
!board[3].equals("3") && !board[4].equals("4") && !board[5].equals("5") &&
!board[6].equals("6") && !board[7].equals("7") && !board[8].equals("8")) {
return "draw";
}
return "not completed";
}
public static boolean moveTaken(String board[], int move) {
if (board[move].equals("O") || board[move].equals("X")) {
return true;
}
return false;
}
public static void printBoard(String board[]) {
System.out.println(" " + board[0] + " | " + board[1] + " | " + board[2] +
"\n-----------\n" +
" " + board[3] + " | " + board[4] + " | " + board[5] +
"\n-----------\n" +
" " + board[6] + " | " + board[7] + " | " + board[8]);
}
public static void conclusion(String result, String pO, String pX) {
if (result.equals("O wins")) {
System.out.println(pO + " wins!");
}
else if (result.equals("X wins")) {
System.out.println(pX + " wins!");
}
else {
System.out.println("Draw.");
}
}
public static void main(String args[]) {
String O = getName(1);
String X = getName(2);
String nextPlayer = O;
String board[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8"};
int move;
while (gameResult(board).equals("not completed")) {
move = getMove(board, nextPlayer);
if (nextPlayer == O) {
board[move] = "O";
nextPlayer = X;
}
else {
board[move] = "X";
nextPlayer = O;
}
}
conclusion(gameResult(board), O, X);
}
}
Which, as I think you can probably guess, is meant to replicate the classic pen and paper game TicTacToe digitally. Has anyone got any tips as to how to optimize/improve my code?