0% encontró este documento útil (0 votos)
156 vistas5 páginas

Diseño Del Juego 3 en Raya

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 5

Diseño del juego 3 en raya

Debes desarrollar el juego 3 en raya en el que los dos jugadores sean humanos, a través de las
siguientes:

Orientaciones Generales:

 1.- Diseño del Tablero: Debes decidir si quieres representar el tablero como una matriz 3x3.
Lo habitual es que inicialices la matriz con valores 0 (cero) en todos sus valores. El valor 0
(cero) representa que la casilla queda libre. Como vas a tener dos jugadores puedes
seguir las siguientes instrucciones: el valor 1 en cualquier lugar de la matriz significa que la
casilla está ocupada por el jugador 1. De forma análoga puedes hacerlo con el jugador 2.

 2.- Turnos de Jugadores: Sería buena idea que tuvieras una variables llamada "turno". Esta
variable debería cambiar de valor desde el "1" hasta el "2" y vuelta a empezar. De esta
manera puedes mostrar mensajes en pantalla del tipo "Es el turno del jugador X" o también
puedes hacer que en cualquier casilla de la matriz introduzcas el valor del turno,
representando a los jugadores 1 ó 2.

 3.- Establecer cómo alternar entre los turnos de los jugadores (jugador 1 y jugador 2).
Puedes hacer un método para este asunto o simplemente puedes tener una variable
entera, que comienza en 1 y queda cada vez que su aumenta el turno se le agrega una
unidad y, al resultado, se le calcula el módulo de la división entre 2, además de sumar
uno. En resumen: turno = ((turno + 1) % 2) + 1 - Este código consigue alternar el turno
entre los valores 1 y 2.

 4.- Validación de Movimientos: Debes asegurarte de validar si un movimiento es válido


(por ejemplo, si una casilla ya está ocupada).

 5.- Verificación del Ganador: Implementa la lógica (programación) para verificar si hay un
ganador después de cada movimiento.

 6.- Bucle general: Todo el juego debería ser un bucle de tipo "do while" que repita las
mismas acciones 2 al 5.

 Finalización del Juego: Decidan cómo terminar el juego cuando haya un ganador o si el
tablero está lleno (empate).

A modo orientativo, te facilito los siguientes nombres de métodos. Recuerda que son sólo
orientativas y depende de tu forma de enfocar este ejercicio.

 void inicializarTablero(int tablero[][])

 void imprimirTablero(

int tablero[][] )

 void realizarMovimiento(

int tablero[][], int fila, int columna, int jugador) // En lugar de "jugador" puedes usar el
"turno"

 void esMovimientoValido(

int tablero[][], int fila, int columna)

 boolean verificarGanador(int tablero[][], int jugador)


 boolean hayEmpate(

int tablero[][])

 int cambiarTurno(int turno)

 main(String[] args)

Recuerda que, si terminas a tiempo todo lo anterior y te apetece, puedes pasar a los siguientes
niveles:

 El programa desarrolla una pequeña IA que evita que el jugador humano consiga ganar.

 El programa desarrolla una IA más elaborada que intenta ganar cuando detecta que
tiene "2 en línea".

¡Suerte!!!!!

import java.util.Scanner;

public class TresEnRaya {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

int[][] tablero = new int[3][3];

int turno = 1;

int ganador = 0;

do {

// Mostrar el tablero actual

mostrarTablero(tablero);

// Obtener la jugada del jugador actual

int fila, columna;

do {

System.out.println("Turno del jugador " + turno);

System.out.print("Ingresa la fila (0, 1, 2): ");

fila = input.nextInt();

System.out.print("Ingresa la columna (0, 1, 2): ");

columna = input.nextInt();

} while (!esMovimientoValido(tablero, fila, columna));


// Registrar la jugada en el tablero

tablero[fila][columna] = turno;

// Verificar si hay un ganador

ganador = verificarGanador(tablero);

// Alternar turno

turno = ((turno + 1) % 2) + 1;

} while (ganador == 0 && !tableroLleno(tablero));

mostrarTablero(tablero);

// Mostrar el resultado del juego

if (ganador != 0) {

System.out.println("¡Jugador " + ganador + " gana!");

} else {

System.out.println("Empate. No hay ganador.");

// Función para mostrar el tablero

public static void mostrarTablero(int[][] tablero) {

System.out.println("Tablero:");

for (int i = 0; i < 3; i++) {

for (int j = 0; j < 3; j++) {

if (tablero[i][j] == 0) {

System.out.print(" - ");

} else if (tablero[i][j] == 1) {

System.out.print(" X ");

} else {

System.out.print(" O ");

if (j < 2) {

System.out.print("|");

System.out.println();

if (i < 2) {

System.out.println("-----------");
}

// Función para verificar si un movimiento es válido

public static boolean esMovimientoValido(int[][] tablero, int fila, int columna) {

if (fila < 0 || fila >= 3 || columna < 0 || columna >= 3) {

System.out.println("Movimiento inválido. Las coordenadas están fuera del rango.");

return false;

if (tablero[fila][columna] != 0) {

System.out.println("La casilla ya está ocupada. Elige otra.");

return false;

return true;

// Función para verificar si hay un ganador

public static int verificarGanador(int[][] tablero) {

for (int i = 0; i < 3; i++) {

// Verificar filas y columnas

if (tablero[i][0] == tablero[i][1] && tablero[i][1] == tablero[i][2] && tablero[i][0] != 0) {

return tablero[i][0];

if (tablero[0][i] == tablero[1][i] && tablero[1][i] == tablero[2][i] && tablero[0][i] != 0) {

return tablero[0][i];

// Verificar diagonales

if (tablero[0][0] == tablero[1][1] && tablero[1][1] == tablero[2][2] && tablero[0][0] != 0) {

return tablero[0][0];

if (tablero[0][2] == tablero[1][1] && tablero[1][1] == tablero[2][0] && tablero[0][2] != 0) {

return tablero[0][2];

}
return 0;

// Función para verificar si el tablero está lleno

public static boolean tableroLleno(int[][] tablero) {

for (int i = 0; i < 3; i++) {

for (int j = 0; j < 3; j++) {

if (tablero[i][j] == 0) {

return false;

return true;

También podría gustarte