4 en raya

[aux_code language=»javascript» theme=»tomorrow» title=»4 en raya» extra_classes=»»]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    private static String[][] tablero = new String[6][7];
    private static int jug = 1;

    public static void main(String[] args) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int x;
        cargarTablero();
        do {
            try {
                String e = br.readLine();
                if (e.equalsIgnoreCase("fin")) {
                    System.out.println("Me despido...");
                    x = -1;
                } else {
                    x = Integer.parseInt(e);
                    if (x > 0 && x <= 7) {
                        if (insertar(x - 1)) {
                            visualizar();
                            if (comprobar()) {
                                System.out.println("El jugador " + jug + " es el ganador");
                                x = -1;
                            } else {
                                jug = jugador();
                                System.out.println("Jugador " + jug + ", selecciona del 1 al 7 para colocar la ficha: (fin para finalizar)");
                            }
                        } else {
                            System.out.println("Posición llena.");
                            x = 0;
                        }
                    } else {
                        System.out.println("Posición no válida.");
                        x = 0;
                    }
                }
            } catch (IOException | NumberFormatException e) {
                x = 0;
                System.out.println("Posición no válida.");
            }
        } while (x >= 0);
    }

    private static int jugador() {
        if (jug == 1) {
            return 2;
        } else {
            return 1;
        }
    }

    private static boolean comprobar() {
        return horizontal() || vertical() || diagonal();
    }

    private static boolean horizontal() {
        boolean es = false;
        for (int x = 0; x < tablero.length && !es; x++) {
            StringBuilder linea = new StringBuilder();
            for (int y = 0; y < tablero[x].length; y++) {
                linea.append(tablero[x][y]);
            }

            if (linea.toString().contains("1111") || linea.toString().contains("2222")) {
                es = true;
            }
        }
        return es;
    }

    private static boolean vertical() {
        boolean es = false;
        for (int x = 0; x < tablero[0].length && !es; x++) {
            StringBuilder linea = new StringBuilder();
            for (String[] strings : tablero) {
                linea.append(strings[x]);
            }
            if (linea.toString().contains("1111") || linea.toString().contains("2222")) {
                es = true;
            }
        }
        return es;
    }

    private static boolean diagonal() {
        boolean es = false;
        StringBuilder linea = new StringBuilder();

        int x = 3;
        int y = 6;
        for (int a = 0; a < 3 && !es; a++) {
            int e = x + a;
            // hacia abajo
            for (int b = 0; b <= 3 && !es; b++) {
                int d = y - b;
                for (int c = 0; c <= 3; c++) {
                    linea.append(tablero[e - c][d - c]);
                }
                if (linea.toString().contains("1111") || linea.toString().contains("2222")) {
                    es = true;
                }
            }
            // hacia arriba
            for (int b = 6; b >= 3 && !es; b--) {
                int d = y - b;
                for (int c = 0; c <= 3; c++) {
                    linea.append(tablero[e - c][d + c]);
                }
                if (linea.toString().contains("1111") || linea.toString().contains("2222")) {
                    es = true;
                }
            }
        }
        return es;
    }

    private static boolean insertar(int linea) {
        if (tablero[0][linea].equals("0")) {
            for (int x = tablero.length - 1; x >= 0; x--) {
                if (tablero[x][linea].equals("0")) {
                    if (jug == 1)
                        tablero[x][linea] = "1";
                    else
                        tablero[x][linea] = "2";
                    x = -1;
                }
            }
            return true;
        } else {
            return false;
        }
    }

    private static void visualizar() {
        for (String[] strings : tablero) {
            for (String string : strings) {
                System.out.print(string);
            }
            System.out.print("\n");
        }

    }

    private static void cargarTablero() {
        for (int x = 0; x < tablero.length; x++) {
            for (int y = 0; y < tablero[x].length; y++) {
                tablero[x][y] = "0";
                System.out.print("0");
            }
            System.out.print("\n");
        }
        System.out.println("Jugador " + jug + ", selecciona del 1 al 7 para colocar la ficha: (fin para finalizar)");
    }
}
[/aux_code]
Etiquetas: Sin etiquetas

Añadir un comentario

Debes estar conectado para publicar un comentario