Código Java (TresEnRaya.java):
package tresenraya;
import java.util.Scanner;
public class TresEnRaya {
private static final char[] JUGADORES = {'X', 'O'};
private static final String LINEA_SUPERIOR = " ╔═══╦═══╦═══╗";
private static final String LINEA_MEDIA = " ╠═══╬═══╬═══╣";
private static final String LINEA_INFERIOR = " ╚═══╩═══╩═══╝";
private static final char[][] tablero = new char[3][3];
private static final Scanner scanner = new Scanner(System.in);
private static int jugadorActual = 0;
public static void main(String[] args) {
try (scanner) {
while (true) {
if (jugar()) {
break;
}
}
}
}
private static boolean jugar() {
inicializarTablero();
while (true) {
dibujarTablero();
if (!realizarJugada()) {
return false;
}
if (verificarGanador()) {
dibujarTablero();
System.out.println("¡El jugador " + JUGADORES[jugadorActual] + " ha ganado!");
return true;
}
if (tableroLleno()) {
dibujarTablero();
System.out.println("¡Empate!");
return true;
}
jugadorActual = 1 - jugadorActual;
}
}
private static void inicializarTablero() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
tablero[i][j] = ' ';
}
}
}
private static void dibujarTablero() {
System.out.println(LINEA_SUPERIOR);
for (int i = 2; i >= 0; i--) {
System.out.print((i + 1) + "-║");
for (int j = 0; j < 3; j++) {
System.out.print(" " + tablero[i][j] + " ║");
}
System.out.println();
if (i > 0) {
System.out.println(LINEA_MEDIA);
}
}
System.out.println(LINEA_INFERIOR);
System.out.println(" A B C");
}
private static boolean realizarJugada() {
System.out.println("Jugador " + JUGADORES[jugadorActual] + ", ingresa coordenada: ");
try {
String entrada = scanner.nextLine().toUpperCase().trim();
if (entrada.length() != 2) {
throw new IllegalArgumentException();
}
int columna = entrada.charAt(0) - 'A';
int fila = Character.getNumericValue(entrada.charAt(1)) - 1;
if (fila < 0 || fila > 2 || columna < 0 || columna > 2 || tablero[fila][columna] != ' ') {
System.out.println("Jugada inválida. Intenta de nuevo.");
return true;
}
tablero[fila][columna] = JUGADORES[jugadorActual];
return true;
} catch (IllegalArgumentException e) {
System.out.println("Entrada inválida. ¿Deseas salir? (s/n)");
return !scanner.nextLine().trim().equalsIgnoreCase("s");
}
}
private static boolean verificarGanador() {
for (int i = 0; i < 3; i++) {
if (tablero[i][0] != ' ' && tablero[i][0] == tablero[i][1] && tablero[i][1] == tablero[i][2]) {
return true;
}
if (tablero[0][i] != ' ' && tablero[0][i] == tablero[1][i] && tablero[1][i] == tablero[2][i]) {
return true;
}
}
return (tablero[0][0] != ' ' && tablero[0][0] == tablero[1][1] && tablero[1][1] == tablero[2][2])
|| (tablero[0][2] != ' ' && tablero[0][2] == tablero[1][1] && tablero[1][1] == tablero[2][0]);
}
private static boolean tableroLleno() {
for (char[] fila : tablero) {
for (char celda : fila) {
if (celda == ' ') {
return false;
}
}
}
return true;
}
}
Resultado:
run:
╔═══╦═══╦═══╗
3-║ ║ ║ ║
╠═══╬═══╬═══╣
2-║ ║ ║ ║
╠═══╬═══╬═══╣
1-║ ║ ║ ║
╚═══╩═══╩═══╝
A B C
Jugador X, ingresa coordenada:
b1
╔═══╦═══╦═══╗
3-║ ║ ║ ║
╠═══╬═══╬═══╣
2-║ ║ ║ ║
╠═══╬═══╬═══╣
1-║ ║ X ║ ║
╚═══╩═══╩═══╝
A B C
Jugador O, ingresa coordenada:
b2
╔═══╦═══╦═══╗
3-║ ║ ║ ║
╠═══╬═══╬═══╣
2-║ ║ O ║ ║
╠═══╬═══╬═══╣
1-║ ║ X ║ ║
╚═══╩═══╩═══╝
A B C
Jugador X, ingresa coordenada:
c3
╔═══╦═══╦═══╗
3-║ ║ ║ X ║
╠═══╬═══╬═══╣
2-║ ║ O ║ ║
╠═══╬═══╬═══╣
1-║ ║ X ║ ║
╚═══╩═══╩═══╝
A B C
Jugador O, ingresa coordenada:
Una forma sencilla y rápida de aprender JAVA, observando y deduciendo cómo se comporta el lenguaje a través de ejemplos prácticos.
Archivo del blog
-
►
2012
(38)
- ► septiembre (3)
-
►
2020
(12)
- ► septiembre (1)
-
▼
2024
(29)
-
▼
agosto
(17)
- Problema del Viajante de Comercio TSP (V.1). Métod...
- Problema del Viajante de Comercio TSP (V.2). Métod...
- Problema del Viajante de Comercio TSP (V.3). Métod...
- Problema del viajante de Comercio TSP (IV.2). Méto...
- Problema del Viajante de Comercio TSP (V.3.1). Aná...
- Matriz de conectividad circular.
- Problema del viajante de Comercio TSP (VI). Método...
- Problema del viajante de Comercio TSP (VII). Métod...
- Problema del viajante de Comercio TSP (VIII). Méto...
- Problema del viajante de Comercio TSP (IX). Método...
- Problema del viajante de Comercio TSP (X). Método ...
- Problema del viajante de Comercio TSP (XI). Método...
- Problema del viajante de Comercio TSP (XII). Métod...
- Problema del viajante de Comercio TSP (XIII). Méto...
- Problema del viajante de Comercio TSP (XIV). Métod...
- Problema del viajante de Comercio TSP (XV). Método...
- Juegos VII. La Mansión Misteriosa: Un juego de tex...
-
▼
agosto
(17)
jueves, 4 de julio de 2024
Juegos IV. Tres en Raya.
Suscribirse a:
Entradas (Atom)
Con la tecnología de Blogger.