website page counter

2° Torneo de Programación - Juez 'Nibbles'

Downloads Nibbles:

Archivo Nibbles.jar (277Kb)

Archivo Nibbles.exe (390Kb)

Código fuente del Jugador de ejemplo

Ejemplo de archivo de configuración Nibbles.ini

1º Torneo de Programación - Juez 'Ceritos'

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

NOVEDADES - 17/11/01:

Por amplia decisión del público, se aprueba el cambio de regla de la siguiente manera:

 Cada vez que un Jugador cierra al menos un 'cerito', continúa jugando.

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

¿ Cómo obtenerlo ?

Sección de 'downloads'

¿ Qué necesito para ejecutarlo ?

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)

¿ Cómo ejecutar el Juez ?

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

Plataformas Windows:

Plataformas Unix:

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.

 

Parámetros al Juez desde el commandLine vs. archivo de Configuración

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:

Parametro1=valor1
Parametro2=valor2
....
ParametroN=valorN

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)

Modos de ejecución

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. 

Jugador Local

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'):

CommandLine1=c:\jugadores\JugadorUno.exe
CommandLine2=jview /cp c:\jugadores com.Jugadores.OtroJugador

Cuando el Juez comience la partida, ejecutará las dos líneas de comandos para crear los dos procesos Jugadores.

Jugador Remoto

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í:

CommandLine1=c:\jugadores\JugadorUno.exe
CommandLine2=java -cp ./jugadores com.Jugadores.OtroJugador
RemoteHost=otroHost
RemotePort=1234
RemoteExecute=true

Jugador Java

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

CommandLine1=c:\jugadores\JugadorUno.exe
CommandLine2=_JAVA_com.Jugadores.OtroJugador

 

Jugador de Demostración: edu.fing.Jugadores.Ceritos

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':

CommandLine1=_JAVA_edu.fing.Jugadores.Ceritos
CommandLine2=_JAVA_edu.fing.Jugadores.Ceritos
HorizontalSize=6
VerticalSize=5

¿ Qué muestra el Juez en pantalla ?

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.

Downloads

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

 

Ultima Actualización: 17 de Noviembre  de 2001