Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package tictactoe;
- import java.util.Scanner;
- public class Main {
- public static void main(String[] args) {
- // write your code here
- Grid grid = new Grid();
- grid.fillGrid();
- grid.setGameInput();
- grid.checkGameState();
- }
- }
- class Grid{
- // Scanner s = new Scanner(System.in);
- static String input;
- public char[] field = new char[9];
- protected void fillGrid() {
- for (int i = 0; i < field.length; i++) {
- field[i] = '_';
- }
- }
- public void showGrid() {
- System.out.print("---------\n" +
- "| " + field[0] + " " + field[1] + " " + field[2] + " |\n" +
- "| " + field[3] + " " + field[4] + " " + field[5] + " |\n" +
- "| " + field[6] + " " + field[7] + " " + field[8] + " |\n" +
- "---------\n");
- }
- public void setGameInput () {
- Scanner s = new Scanner(System.in);
- input = s.nextLine();
- field = input.toCharArray();
- showGrid();
- checkGameState();
- }
- public void checkGameState() {
- int xCounter = 0;
- int yCounter = 0;
- for (int i = 0; i < field.length; i++) {
- if (field[i] == 'X') {
- xCounter++;
- } else if (field[i] == 'O') {
- yCounter++;
- }
- }
- boolean isItImpossibleQuantityDifference = xCounter > yCounter + 1 || xCounter < yCounter - 1 || yCounter > xCounter + 1 || yCounter < xCounter - 1 ? true : false;
- for (;;) {
- if ((input.contains("_") && !isXWin() && !isOWin()) && !isItImpossibleQuantityDifference) {
- System.out.println("Game not finished");
- return;
- } else if (isXWin() && !isOWin()) {
- System.out.println("X wins");
- return;
- } else if (isOWin() && !isXWin()) {
- System.out.println("O wins");
- return;
- } else if ((isOWin() && isXWin()) || isItImpossibleQuantityDifference || (isXWin() && isOWin())) {
- System.out.println("Impossible");
- return;
- } else {
- System.out.println("Draw");
- return;
- }
- }
- }
- private boolean isXWin () {
- return (field[0] == 'X' && field[4] == 'X' && field[8] == 'X') ||
- ((field[2] == 'X' && field[4] == 'X' && field[6] == 'X') ||
- (field[0] == 'X' && field[3] == 'X' && field[6] == 'X') ||
- (field[1] == 'X' && field[4] == 'X' && field[7] == 'X') ||
- (field[2] == 'X' && field[5] == 'X' && field[8] == 'X') ||
- (field[0] == 'X' && field[1] == 'X' && field[2] == 'X') ||
- (field[3] == 'X' && field[4] == 'X' && field[5] == 'X') ||
- (field[6] == 'X' && field[7] == 'X' && field[8] == 'X'));
- }
- private boolean isOWin () {
- return (field[0] == 'O' && field[4] == 'O' && field[8] == 'O') ||
- ((field[2] == 'O' && field[4] == 'O' && field[6] == 'O') ||
- (field[0] == 'O' && field[3] == 'O' && field[6] == 'O') ||
- (field[1] == 'O' && field[4] == 'O' && field[7] == 'O') ||
- (field[2] == 'O' && field[5] == 'O' && field[8] == 'O') ||
- (field[0] == 'O' && field[1] == 'O' && field[2] == 'O') ||
- (field[3] == 'O' && field[4] == 'O' && field[5] == 'O') ||
- (field[6] == 'O' && field[7] == 'O' && field[8] == 'O'));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement