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_respondedigitando 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!