Quarto Exercício-Programa
Jogo da Velha 3D
Entrega: 5 de dezembro
O objetivo deste exercício-programa é implementar um algoritmo para um
jogo que baseia-se em explorar todas as possibilidades de jogadas dentro
de um limite, e implementar boas heurísticas de avaliação de melhor jogada,
dentre as várias examinadas.
O jogo escolhido é o jogo da velha 3D, que é uma variante do nosso bem
conhecido jogo da velha. Esta variante consiste de n x n pinos
dispostos em forma de uma matriz quadrada. Cada pino tem espaço para receber
n bolinhas. Cada bolinha é branca e preta. Veja uma figura (tirada do
endereço http://www.naturwaren-online.de/catalog/images/4462_TicTacToe.jpg)
da versão 4 x 4 do jogo.
Cada jogador fica com uma das cores. O jogador que tem as bolinhas brancas
sempre começa. O objetivo de cada jogador, como no original, é conseguir uma
sequência completa, com n bolinhas da dua cor, em uma das direções.
Note que, nesta variante 3D, ao colocarmos uma bolinha em um dos pinos, esta
cai até chegar ao primeiro nível vazio, por conta da gravidade. Na figura
acima, as brancas ganharam, já que completaram a segunda fileira de baixo para
cima, do plano mais externo à frente.
Estratégia do programa
O seu programa, para decidir pela jogada, tentará todas as possíveis jogadas
e, para cada uma delas, todas as possíveis jogadas do adversário, e de novo,
todas as suas possíveis jogadas, etc, até um certo ponto. O usuário escolherá
no início do jogo a profundidade desta busca exaustiva pela melhor jogada.
Se a profundidade escolhida for 0, o seu programa apenas escolhe a melhor
jogada dentre todas as possíveis neste ponto. Se a profundidade escolhida for
1, o seu programa gera, para cada possível jogada, cada possível jogada do
adversário e cada possível resposta sua a esta jogada, e escolhe a jogada que
o leva a melhor situação em dois passos (levando em conta que o adversário
provavelmente escolherá a melhor resposta à sua jogada). Se a profundidade for
2, de forma semelhante seu programa escolhe a jogada que o levará à melhor
situação levando em conta as próximas duas jogadas do adversário, e assim por
diante.
Para decidir qual é a melhor jogada entre as várias possíveis, você vai ter
que pensar em uma função que avalie a situação do tabuleiro, para ajudá-lo a
decidir qual das situações parecem melhor. Evidentemente uma jogada que o leve
a ganhar é a melhor possível. Algumas vezes porém não chegaremos a vitória na
nossa busca exaustiva. Assim mesmo, seu programa terá que decidir por uma jogada.
Entrada e saída do programa
O seu programa vai jogar contra o usuário. Ele deve estar preparado para jogar
com as brancas e com as pretas. Primeiramente o programa lerá o inteiro
n, a cor com que o usuário quer jogar e a profundidade máxima da busca
exaustiva a ser usada. Depois disso, o jogo começa e, a cada passo, a jogada
do usuário é lida, no formato (x,y), indicando em que pino o usuário
quer colocar a sua próxima bolinha.
Depois de cada jogada, seu programa deve imprimir o pino em que jogou, no
mesmo formato (x,y), e deve mostrar a situação do tabuleiro, para que o
usuário possa escolher sua próxima jogada.
Avaliação da sua estratégia
Cada programa terá a sua própria estratégia de escolha da próxima jogada, que
dependerá da sua função de avaliação do tabuleiro.
Capriche para implementar a melhor estratégia, pois, para avaliarmos
as diversas estratégias de vocês, organizaremos um campeonato! Neste
campeonato, o seu programa jogará contra o programa de outros alunos.
O melhor programa receberá um grande prêmio!!
Divirta-se com o EP!
Entrega, prazos e observações
- O EP é estritamente individual.
- O EP é estritamente individual. Usaremos um sistema para
detecão de EPs copiados.
- O EP é estritamente individual. Alunos envolvidos em cola
serão reprovados na disciplina sem mais, e seus nomes serão
encaminhados para a Comissão de Graduação para demais
providências.
- Exercícios atrasados não serão aceitos.
- Capriche na documentação do seu programa.
- Coloque o cabeçalho usual em seu programa (como em MAC110), com
nome, número USP, curso, data, nome do professor e
identificação do EP (EP1)...
- A entrega do programa consiste da entrega eletrônica do
programa. O seu
programa
deve ser entregue até dia 1 de
dezembro, inclusive.
Last modified: Wed Dec 1 12:53:47 BRST 2010