Archivo Nibbles.jar (277Kb)
Archivo Nibbles.exe (390Kb)
Código fuente del Jugador de ejemplo
Ejemplo de archivo de configuración Nibbles.ini
Esta disponible la versión 1.0B(eta) del Juez de Ceritos y un Jugador simple de demostración.
Link a página 'oficial': http://www.cei.edu.uy/torneoprog
Por amplia decisión del público, se aprueba el cambio de regla de la siguiente manera:
Esto modifica el protocolo que deben cumplir el Juez y los Jugadores de la siguiente manera:
Cuando el Jugador X le comunica una jugada al Juez y éste determina que ha cerrado al menos un 'cerito', le enviará un mensaje 'oponente sigue jugando' seguido de un mensaje con las coordenadas de la jugada al Jugador oponente, y le enviará un mensaje 'sigue jugando' al Jugador X.
Por ejemplo, supongamos que el Jugador 2 va a hacer la jugada [12,10] , [12,11] y que esta jugada va a cerrar un 'cerito':
Jugador 2: 12 10 12 11
Juez a Jugador 2: sigue jugando
Juez a Jugador 1: oponente sigue jugando
Juez a Jugador 1: 12 10 12 11
Juez a Jugador 2: sigue jugando
y el juez espera nuevamente jugada del Jugador 2
A modo de ejemplo, en la seccion de downloads se encuentra código fuente del jugador de muestra modificado para que maneje la nueva regla.
Junto con el cambio de reglas se agregó un nuevo parámetro para
habilitar/deshabilitar esta nueva regla. Por defecto la regla estará
habilitada.
El parámetro para indicar si se quiere utilizar la nueva regla es ApplyNewRule
Por ejemplo, si no quiero que el juez utilice la nueva regla, puedo poner en
el archivo 'Ceritos.ini'
ApplyNewRule= false
El Jugador de ejemplo puede jugar tanto con la nueva regla habilitada como deshabilitada
El Juez fue realizado en Java, por lo que para ejecutarlo es necesario tener instalada la VM (máquina virtual de Java). El programa Juez funciona con JRE 1.1. Los usuarios Windows tienen la VM de Microsoft que viene preinstalada con el Internet Explorer. Para ejecutar el Juez desde Unix será necesario instalar alguna VM (por ejemplo la de Sun o la de IBM).
Se brinda un ejecutable (Ceritos.exe) para ejecutar el Juez la VM de Microsoft aunque se recomienda ejecutar el programa desde una ventana de línea de comandos (commandLine) pues allí se despliegan ciertos mensajes de inicialización.
Adicionalmente, se entrega un .JAR (Java ARchive) que puede ser utilizado para ejecutar el Juez desde cualquier plataforma.
Para funcionar correctamente el Juez debe conocer los nombres de los Jugadores (ejecutables) y cualquier otro parámetro de ejecución. Estos parámetros pueden ser pasados directamente al Juez desde el commandLine o pueden residir en un archivo de configuración (Ceritos.ini)
La clase principal del Juez es 'edu.fing.Torneo.Ceritos', y la del Jugador de demo es 'edu.fing.Jugadores.Ceritos'. Nota: se deben respetar las mayúsculas/minúsculas en los nombres
Los parámetros al Juez son opcionales si se define un archivo de configuración. En general se deben pasar cada uno de estos pares (parámetros=valor) encerrándolos entre comillas.
Para evitar el tener que escribir los parámetros en cada ejecución, se puede definir un archivo de configuración llamado 'Ceritos.ini' con el siguiente formato:
Los parámetros aceptados por el Juez para esta versión son los siguentes. (entre paréntesis se muestran los valores por defecto cuando los hay)
Nota 1: Las mayúsculas/minúsculas en los nombres de los parámetros se deben
respetar
Nota 2: El Jugador de demo aquí presentado también toma en cuenta este archivo
de configuración (imprescindible para poder ejecutar con distintos tamaños de
grilla)
El Juez permite ejecutar a los Jugadores en tres modos: Jugador Local,
Jugador Remoto y Jugador Java.
El Jugador 1 es el que comienza la partida. En el caso en que un Jugador no
pueda inicializarse, se mostrará un mensaje por la salida estándar y se
terminará automáticamente la ejecución.
Un Jugador local es aquel Jugador que fue realizado en cualquier lenguaje y
que va a ejecutarse nativamente en la PC donde está corriendo el Juez.
Normalmente va a ser un .EXE de Windows/DOS realizado en Pascal / ModulaII / C /
C++ / etc, pero también puede ser un programa Java.
Supongamos que tengo un Jugador de nombre (JugadorUno.exe) realizado en (por
ejemplo) Pascal, y que tengo otro Jugador realizado en Java cuya clase principal
es 'com.Jugadores.OtroJugador'
Entonces una configuración posible de ejecución es la siguiente (en el archivo
de configuración 'Ceritos.ini'):
Cuando el Juez comience la partida, ejecutará las dos líneas de comandos para crear los dos procesos Jugadores.
Un Jugador remoto es aquel Jugador que (normalmente) va a ser ejecutado en una computadora distinta que la que ejecuta al Juez. De esta manera se permite realizar partidos entre Jugadores que ejecuten en distintas plataformas Windows/Unix o dos máquinas distintas con la misma plataforma. Cuando se le especifica al Juez que se desea utilizar un Jugador Remoto (ya sea mediante argumentos en la línea de comandos o en el archivo de configuración), el Juez toma al Jugador 2 como Jugador Remoto
Para ejecutar un Jugador Remoto primero es necesario levantar el Servidor de Ejecución remota que se encuentra en el archivo Ceritos.JAR. Para levantar el servidor hay que ejecutar la siguiente línea de comandos:
donde puerto es el puerto donde va a escuchar el servidor (por ejemplo: 1234).
Una vez levantado el servidor de ejecución será necesario setear los parámetros RemoteHost, RemotePort, y RemoteExecute en el archivo de configuración, para que refleje los valores del host donde corre el servidor, el puerto en que escucha y para indicar que la ejecución del Jugador será remota.
Por ejemplo, para el mismo caso de ejemplo, y suponiendo que el Jugador 2 va a ejecutar remotamente en el Host 'otroHost' en el puerto 1234, el archivo de configuración quedaría así:
Un Jugador realizado en Java puede correr cómo Jugador Local, Jugador Remoto, o Jugador Java. La ventaja de ejecutar un Jugador realizado en Java como Jugador Java es que no sobrecarga la CPU ejecutando varias instancias de la máquina virtual, sino que ejecuta al Juez y al Jugador en la misma VM.
Para ejecutar un Jugador como Jugador Java, simplemente hay que añadir al comienzo del 'CommandLine' asociado la palabra _JAVA_
En el ejemplo, si queremos que el Jugador 2 ejecute como Jugador Java habría que especificarlo de esta manera en el archivo de configuración
El Jugador de demostración aquí presentado no tiene ninguna
inteligencia, aunque no se equivoca (en el sentido de que no va a realizar una
jugada prohibida). El código fuente del mismo se encuentra disponible en la
seccion de Downloads.
El Jugador compilado se encuentra como parte del archivo Ceritos.JAR y del
archivo Ceritos.exe, por lo que no es necesario hacer nada para poder probarlos.
Por ejemplo, en Windows puedo ejecutar lo siguiente:
Ceritos.exe "CommandLine1=_JAVA_edu.fing.Jugadores.Ceritos"
"CommandLine2=_JAVA_edu.fing.Jugadores.Ceritos"
o alternativamente
java -jar Ceritos.JAR "CommandLine1=_JAVA_edu.fing.Jugadores.Ceritos"
"CommandLine2=_JAVA_edu.fing.Jugadores.Ceritos"
para que comience un partido entre dos instancias del Jugador de demo
El Jugador de demo toma en cuenta el tamaño de la grilla pasado en los argumentos
'HorizontalSize'
y 'VerticalSize' si éstos se encuentran en el archivo de configuración.
Por ejemplo, para que jueguen dos instancias de este Jugador entre ellas, con
tamaño de grilla 6x5 se podría especificar lo siguiente en el archivo 'Ceritos.ini':
A menos que en los parámetros se haya especificado lo contrario (parámetros HasUI y ShowMessages), al ejecutar el Juez aparecerá una pantalla como la siguiente (para el caso del ejemplo anterior con grilla de 6x5) que muestra el progreso del partido:
Adicionalmente se mostraran dos ventanas como la siguiente con la información de los mensajes de comunicación entre el Juez y cada uno de los Jugadores (una ventana para cada Jugador):
En la parte de arriba se muestran todos los mensajes que envió el Juez
al Jugador 1 y el Jugador 1 al Juez.
En la parte de abajo se muestran todos los mensajes que el Jugador envió a
la salida estándard de error (stderr), donde el Jugador puede 'imprimir'
cualquier mensaje de Debug que desee.
Archivo Ceritos.JAR (132Kb)
Archivo Ceritos.exe (172Kb)
Código fuente del Jugador de ejemplo
Ejemplo de archivo de configuración Ceritos.ini
Zip con rutinas de manejo de entrada/salida en VisualBasic