Abaixo encontram-se as explica��es sobre o programa.
Tabuleiro
O jogo ser� jogado num tabuleiro 3x3, como o de jogo da velha normal. A numera��o das casas dever� seguir o seguinte padr�o: _____ _____ _____ | | | | | 1 | 2 | 3 | |_____|_____|_____| | | | | | 4 | 5 | 6 | |_____|_____|_____| | | | | | 7 | 8 | 9 | |_____|_____|_____| As casas ser�o representadas por um n�mero entre 1 e 9, inclusive.Regras do Jogo
Cada jogador tem tr�s pedras. Quem joga primeiro ser� chamado de X, e o outro jogador � O. O objetivo de cada jogador � posicionar suas tr�s pedras em linha reta (vertical, horizontal ou diagonal). O tabuleiro come�a vazio, e alternadamente os jogadores fazem suas jogadas, com�ando pelo jogador X. Enquanto n�o estiverem as seis pedras no tabuleiro, uma jogada consiste em colocar uma pedra em uma casa vazia. Quando as tr�s pedras de cada jogador j� estiverem no tabuleiro, uma jogada passa a ser a movimenta��o de uma pedra para uma posi��o vizinha n�o ocupada. Define-se como casa vizinha aquela � qual se pode chegar movendo-se uma posi��o no sentido vertical, horizontal, ou diagonal.
Cada jogador s� pode mexer em suas pr�prias pedras. N�o � permitido "passar" a vez.
Exemplo de partida
A seguir exibimos umapartida para ilustrar o jogo. Os tr�s primeiros lances de cada jogador s�o indicados por casas, e os restantes por listas da forma (a b), onde a � a posi��o de origem e b � a posi��o de destino da pedra que foi movida.
X | O |
1 | 5 |
6 | 3 |
7 | 4 |
[1, 2] | [4, 1] |
[7, 4] | [5, 8] |
[2, 5] |
O X venceu, pois conseguiu fazer uma linha reta. Note que o O j� estava perdido na pen�ltima jogada, pois s� podia mexer a pedra 5, deixando o lugar vago para o X ganhar. Posi��o final:
_____ _____ _____ | | | | | O | | O | |_____|_____|_____| | | | | | X | X | X | |_____|_____|_____| | | | | | | O | | |_____|_____|_____|A partida pode terminar empatada se nenhum dos jogadores tiver ganho depois de trancorridas n jogadas.
O que voce deve implementar
Voce dever� escrever um programa em PROLOG que joga este jogo, tanto do lado do X como do lado do O. Seu programa dever� ter quatro predicados:
x_inicia(-Jogada)Este predicado ser� chamado com uma vari�vel livre como argumento e dever� instanci�-la com o valor da casa onde seu programa jogar� o primeiro lance como X. Al�m disso, pode executar as inicializa��es que julgar necess�rias.
Este predicado ser� chamado com o primeiro argumento instanciado com o valor da �ltima jogada do O, e deve instanciar o seu segundo argumento com o valor da jogada-resposta.
o_inicia(+Jogada, -Resposta)Este predicado ser� chamado com uma vari�vel livre como argumento e dever� instanci�-la com o valor da casa onde seu programa jogar� o primeiro lance como O. Al�m disso, pode executar as inicializa��es que julgar necess�rias.
o_responde(+Jogada, -Resposta)Este predicado ser� chamado com o primeiro argumento instanciado com o valor da �ltima jogada do X, e deve instanciar o seu segundo argumento com o valor da jogada-resposta.
Para evitar conflitos com outros programas, usaremos m�dulos. Cada m�dulo definir� um espa�o de nomes diferente, evitando conflitos. � muito simples usar m�dulos em SWI-Prolog. Basta que seu programa comece com a seguinte linha:
Funcionamento mínimo
O funcionamento mínimo é importante pois todo aluno que não o cumprir vai para exame direto.Neste projeto, o funcionamento mínimo é o seguinte: seu programa n�o poder� perder mais do que 10% das partidas disputadas por ter feito jogadas inv�lidas.
Avalia��o
Os programas de todos os alunos que entregarem no prazo, ou at� dez dias ap�s o prazo, ser�o colocados num campeonato. Para cada dia de atraso, o aluno perde um ponto na nota. Este campeonato consiste em jogar uns contra os outros e ver quem acumula mais pontos. Os pontos s�o contados como: 3 para vit�ria, 1 para empate, 0 para derrota (jogada inv�lida conta como derrota).
Os jogadores ser�o ordenados pelo total de pontos. Os que n�o fizeram o funcionamento m�nimo ser�o removidos da lista. O primeiro colocado tira 10 (dez). O �ltimo colocado fica com 5 (cinco). Os outros ter�o sua nota calculada por interpola��o de seu total de pontos em rela��o ao interalo [5,10]. Ap�s tudo isso, ser�o descontados os pontos devidos aos dias de atraso, se houver.
A nota dos que n�o cumprirem o funcionamento m�nimo ser� 5 multiplicado pela fra��o de partidas onde o programa n�o fez jogadas inv�lidas.
Como sempre, programas iguais ou suficientemente parecidos ser�o punidos com nota zero para todos os envolvidos.
Joao MeidanisLast modified: Sat Sep 25 15:40:11 EST 1999 by JM