MC600 - Estudo Comparativo de Linguagens de Programação

Turma A - Segundo Semestre de 2004

Voltar à pagina inicial da disciplina

Gomoku


O Jogo

Gomoku, também chamado de go-moku, é um jogo tradicional Asiático, jogado na China desde 700 DC, cujo princípio se assemelha ao Jogo da Velha ou Connect 4.

O jogo acontece num tabuleiro de tamanho por 15x15 (em algumas versões 19x19), e os jogadores vão colocando suas peças alternadamente no tabuleiro (brancas e pretas): vence quem conseguir alinhar 5 ou mais peças de sua cor na horizontal, vertical ou diagonal.

O primeiro movimento é sempre efetuado pelo jogador com peças brancas.


Implementação do jogador

Ao longo do curso deverão ser implementados jogadores de gomoku em lisp, prolog e java, que se enfrentarão em campeonatos.

Cada jogador deverá manter seu próprio estado do jogo. O tabuleiro do jogo será de tamanho variável, podendo ser quadrado ou retangular e contendo no mínimo 5 casas (vertical e horizontal) e no máximo 19 casas (ex.: 10x10, 19x5, 5x5, 10x7, etc). Um gerenciador irá organizar os campeonatos, fazendo as chamadas necessárias aos jogadores.

Cada jogador deverá implementar no mínimo 2 métodos, que serão chamados pelo gerenciador:

Um exemplo de sequência de jogo seria:

start(10, 10, 0) -> INICIALIZA PRETO
start(10, 10, 1) -> INICIALIZA BRANCO
(5, 5) -> BRANCO JOGA
play(5, 5)
(5, 6) -> PRETO JOGA
play(5, 6)
(6, 5) -> BRANCO JOGA
play(6, 5)
(5, 7) -> PRETO JOGA
play(5, 7)
(7, 5) -> BRANCO JOGA
play(7, 5)
(5, 8) -> PRETO JOGA
play(5, 8)
(8, 5) -> BRANCO JOGA
play(8, 5)
(5, 9) -> PRETO JOGA
play(5, 9)
(4, 5) -> BRANCO VENCE

Ao final do campeonato, serão contabilizados os números de pontos de cada jogador (serão computados 3 pontos para cada vitória e 1 ponto por empate). Aquele que possuir mais pontos irá obter nota 10, aquele que tiver menos pontos receberá nota 5, e os outros terão suas notas calculadas de acordo com a seguinte função:

nota = 5*(pontos - min)/(max - min) + 5

onde pontos representa o número de pontos do jogador, max representa o número de pontos conseguidos pelo campeão e min representa o número mínimo de pontos conseguidos por qualquer jogador do campeonato.

Por exemplo: se o jogador conseguir 4 vitórias e 3 empates, ou seja, 15 pontos, e o campeão tiver 30 pontos e o pior classificado 10, então sua nota final após o campeonato será 5*(15-10)/(30-10)+5 = 5*5/20+5=6.25.

O jogador que tiver cometido mais de 10% de jogadas inválidas terá nota 5 - 5 * PJI (porcentagem de jogadas inválidas). Por exemplo, se um jogador, em 20% das partidas, cometer uma jogada inválida, receberá nota 5 - 5*20% = 4.

Cada jogador terá um segundo para efetuar a sua jogada. Jogadores que ultapassarem este tempo serão desclassificados por jogada inválida.

Os projetos devem ser entregues até no máximo às 23:59h da quinta-feira, dois dias após a prova da linguagem correspondente. Haverá uma penalidade de 20% por dia de atraso na entrega do jogador. Por exemplo, um aluno que entregar seu jogador no sábado a tarde (dois dias de atraso), receberá apenas 60% da nota correspondente do campeonato.