Si alguien me puede dejar el código de un 3 en raya para dos jugadores se lo agradecería.
1 respuesta
Respuesta de retsam
1
1
retsam, lenguajes de desarrollo web (asp, jsp, html, javascript,...
import java.awt.*; import java.awt.image.*; import java.net.*; import java.applet.*; // ========================================================================== // Esta clase es la que se encarga de jugar // ========================================================================== class Busqueda { public final static int VACIO = 0; public final static int COMP = 1; public final static int JUGADOR = 2; public final static int JUEGO_CONTINUA = 0; public final static int ALGUIEN_GANO = 1; public final static int TABLERO_LLENO = -1; // Guarda el tablero actual private int tablero[] = new int[7]; // Profundidad maxima. Cambialo si quieres, pero que sea de 2 en 2 private int profundidadMaxima = 6; // Estado actual del juego (si ha ganado alguien, etc..) private int estadoJuego; public int EstadoJuego() { return estadoJuego; } // ------------------------------------------------------------------------ // Comprueba si una columna de un tablero cualquiera admite mas fichas // ------------------------------------------------------------------------ private boolean _EstaVacio(int columna, int tab[]) { return (tab[columna]<=1023); } // ------------------------------------------------------------------------ // Comprueba si una columna del tablero de juego admite mas fichas // ------------------------------------------------------------------------ public boolean EstaVacio(int columna) { if(columna>=0 && columna<7) return _EstaVacio(columna,tablero); else return false; } // ------------------------------------------------------------------------ // Devuelve el estado de ocupacion (ordenador, jugador o vacio) de una // casilla de un tablero // ------------------------------------------------------------------------ private int _Casilla(int columna, int fila, int tab[]) { return (tab[columna]>>(fila*2))%4; } // ------------------------------------------------------------------------ // Devuelve el estado de ocupacion de una casilla del tablero de juego // ------------------------------------------------------------------------ public int Casilla(int columna, int fila) { return _Casilla(columna,fila,tablero); } // ------------------------------------------------------------------------ // Mete una ficha del jugador dado en la casilla mas baja disponible en // la columna dada de un tablero // ------------------------------------------------------------------------ private int _Mover(int jugador, int columna, int tab[]) { int fila; for (fila=0; fila<6; fila++) if (_Casilla(columna,fila,tab)==VACIO) break; tab[columna] += jugador<<(2*fila); return fila; } // ------------------------------------------------------------------------ // Mete una ficha del jugador dado en la casilla mas baja disponible en // la columna dada del tablero de juego // ------------------------------------------------------------------------ public int Mover(int jugador, int columna) { int fila = -1; if(EstaVacio(columna)) fila = _Mover(jugador, columna, tablero); ExaminarJuego(); return fila; } // ------------------------------------------------------------------------ // Funcion de evaluacion. Básicamente se puede decir que suma 10 por cada // Posible proyecto en el que coincidan ya 3 fichas y uno por cada uno de // 2 fichas. No esta muy depurado y por eso suma 20 (por ejemplo), en este // caso: // XXX <-Esa casilla esta libre, luego sumamos // OXO // XOO // cuando seria mas correcto que sumara 10. Sigue el mismo criterio para // restar puntos por los proyectos del adversario. // No cuenta ni lo