O gerenciador de campeonato foi programado para SWI-Prolog, tanto na sua versão Windows quanto UNIX.
O gerenciador de campeonato é um programa em Prolog contido
num arquivo chamado camp.prolog. Para usá-lo,
você tem que ter pelo menos dois módulos que implementam
a funcionalidade de X e O. Cada módulo deve estar num
arquivo e deve ter um nome. O nome será usado para duas
coisas: dar nome ao arquivo e dar nome ao módulo.
Você deverá ter no mínimo dois módulos para poder jogar um contra o outro. Nao dá pra fazer campeonato com apenas um jogador. Contudo, mesmo se você tiver apenas uma implementação, poderá fabricar dois módulos iguaizinhos, mas com nomes diferentes, e colocá-los para enfrentar-se. Veja abaixo como preparar módulos e como colocá-los para jogar entre si.
Para exemplificar, suponha que você queira escrever um
módulo de nome "ra999999". Então este módulo deve
necessariamente ser colocado todo num arquivo chamado
ra999999.prolog, para ser usado pelo gerenciador, e a
primeira linha deste arquivo deve especificar o módulo, como segue:
:- module( ra999999, [] ).
No resto do arquivo ra999999.prolog você deve
implementar os quatro predicados
x_inicia
x_responde
o_inicia
o_responde
digitando seu código e o código de qualquer
predicado auxiliar usado por estes que não seja
pré-definido. Lembre-se de definí-los com o
número de argumentos correto (veja na
especificação do projeto).
Se você já tem vários (no mínimo dois) módulos, cada um preparado como acima, poderá usar o gerenciador para promover um campeonato entre eles, da seguinte forma.
% pl
Welcome to SWI-Prolog (version 3.2.8)
Copyright (c) 1993-1998 University of Amsterdam. All rights reserved.
For help, use ?- help(Topic). or ?- apropos(Word).
1 ?- consult(çamp.prolog').
camp.prolog compiled, 0.00 sec, 44 bytes.
Yes
campeonato, passando
como parâmetro uma lista com os nomes de todos os módulos
que vão participar. A função promove os jogos de
todos contra todos, imprime os lances de cada jogo e o resultado.
2 ?- campeonato([ra999999, ra474747, ra987654 ...]).
ra999999.prolog compiled into ra1, 0.00 sec, 0 bytes.
ra474747.prolog compiled into ra2, 0.00 sec, 0 bytes.
ra999999 versus ra474747
1. x 5
2. o 1
3. x 2
4. o 3
5. x 4
6. o 6
...
Bom divertimento!