3 en Raya con Array

[aux_code language=»javascript» theme=»tomorrow» title=»3 en Raya con Array» extra_classes=»»]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {

    private static int[][] juego = new int[3][3];
    private static int ganador;

    public static void main(String[] args) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int jugador = 1;
        empate();
        do {
            if (jugador == 0) {
                jugador = 1;
            } else {
                jugador = 0;
            }
            boolean listo = false;
            do {
                try {
                    System.out.println("Intro las coordenadas de manera seguido: 11, 12, 13, 21, 22, ...:");
                    String e = br.readLine();
                    if (e.equals("11") || e.equals("12") || e.equals("13") || e.equals("21") || e.equals("22") || e.equals("23") || e.equals("31") || e.equals("32") || e.equals("33")) {
                        listo = juego(jugador, e);
                    } else {
                        System.out.println("Movimiento fuera de rango");
                    }
                } catch (IOException | NumberFormatException ex) {
                    System.out.println("Únicamente valores numéricos.");
                }
            } while (!listo);
            visualizarTablero();
            comprobarGanador();
            if (ganador == 0) {
                System.out.println("El jugador 1 es el Ganador");
            } else if (ganador == 1) {
                System.out.println("El jugador 2 es el Ganador");
            }
        } while (ganador == -1);
    }

    private static void comprobarGanador() {
        // Horizontal
        for (int[] h : juego) {
            if (h[0] == 0 && h[1] == 0 && h[2] == 0) {
                ganador = 0;
            } else if (h[0] == 1 && h[1] == 1 && h[2] == 1) {
                ganador = 1;
            }
        }
        // Vertical
        for (int v = 0; v < juego[0].length; v++) {
            if (juego[0][v] == 0 && juego[1][v] == 0 && juego[2][v] == 0) {
                ganador = 0;
            } else if (juego[0][v] == 1 && juego[1][v] == 1 && juego[2][v] == 1) {
                ganador = 1;
            }
        }
        // cruz
        if (juego[0][0] == 0 && juego[1][1] == 0 && juego[2][2] == 0 ||
                juego[0][2] == 0 && juego[1][1] == 0 && juego[2][0] == 0) {
            ganador = 0;
        } else if (juego[0][0] == 1 && juego[1][1] == 1 && juego[2][2] == 1 ||
                juego[0][2] == 1 && juego[1][1] == 1 && juego[2][0] == 1) {
            ganador = 1;
        } else {
            if (juego[0][2] != -1 && juego[1][2] != -1 && juego[2][2] != -1 && juego[1][1] != -1 && juego[1][3] != -1 && juego[2][1] != -1 && juego[0][3] != -1) {
                System.out.println("Empate!\n");
                empate();
            }
        }
    }

    private static void empate() {
        ganador = -1;
        for (int[] ints : juego) {
            Arrays.fill(ints, -1);
        }
        System.out.println("  1 2 3\n" +
                "1 . . .\n" +
                "2 . . .\n" +
                "3 . . .");
    }

    private static void visualizarTablero() {
        StringBuilder tab = new StringBuilder();
        tab.append("  1 2 3 \n");
        for (int x = 0; x < juego.length; x++) {
            tab.append(x + 1).append(" ");
            for (int y = 0; y < juego[x].length; y++) {
                tab.append((juego[x][y] == -1) ? "· " : (juego[x][y] == 0) ? "O " : "X ");
            }
            tab.append("\n");
        }
        System.out.println(tab.toString());
    }

    private static boolean juego(int jugador, String coordenada) {
        int x = Integer.parseInt(coordenada.substring(0, 1)) - 1;
        int y = Integer.parseInt(coordenada.substring(1, 2)) - 1;

        if (juego[x][y] == -1) {
            juego[x][y] = jugador;
            System.out.println("Listo!");
            return true;
        } else {
            System.out.println("Ya ocupado!");
            return false;
        }
    }
}
[/aux_code]
Etiquetas: Sin etiquetas

Añadir un comentario

Debes estar conectado para publicar un comentario