Instruções

Como usar o Gerenciador de Campeonato

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.

Preparação de um módulo

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).

Fazendo campenatos

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.

  1. Chame o SWI-Prolog
    % 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).
    
        
  2. Carregue o gerenciador
    1 ?- consult(çamp.prolog').
    camp.prolog compiled, 0.00 sec, 44 bytes.
    
    Yes
        
  3. Chame o predicado 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!


Joao Meidanis
Last modified: Wed Sep 8 22:28:56 EST 1999 by JM