O segundo projeto de programa��o, a ser implementado em PROLOG, ter� como tema o Jogo da Velha Modificado, explicado a seguir. O progama dever� ser entregue at� o dia 26/09/1999 �s 23:59. A forma de entrega ser� via Web, semelhantemente ao que ocorreu com o primeiro projeto. Abaixo encontram-se as explica��es sobre o programa. Show TabuleiroO 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 JogoCada 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 partidaA 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
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 implementarVoce 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. x_responde(+Jogada, -Resposta) 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: :- module(raNNNNNN, []).onde NNNNNN � o seu RA. Exemplo: se seu login � 973451, use ra973451 como nome do m�dulo. Seu programa deve ser submetido num arquivo chamado raNNNNNN.prolog , onde novamente NNNNNN � o seu RA. Funcionamento mínimoO 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��oOs 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 Meidanis Last modified: Sat Sep 25 15:40:11 EST 1999 by JM Quantas combinações jogo da velha?O objetivo é simples: completar três figuras em uma linha, impedindo seu oponente de fazer o mesmo. Uma continha besta (nove fatorial, ou 9!, ou 9 x 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1) nos dá a quantidade de combinações possíveis: 362.880 jogos da velha.
Qual é o segredo do jogo da velha?Marque um dos cantos e, dependendo do que seu oponente fizer, marque outro canto, e você estará com a vitória nas mãos. Por exemplo, se você faz o X no canto inferior esquerdo, e ele coloca o O no canto inferior direito, você deve responder com um X no canto superior esquerdo.
Qual é a lógica do jogo da velha?O objectivo é conseguir três círculos ou três xis em linha, quer horizontal, vertical ou diagonal , e ao mesmo tempo, quando possível, impedir o adversário de ganhar na próxima jogada. Quando um jogador conquista o objetivo, costuma-se riscar os três símbolos.
Como começar o jogo da velha?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.
|