Você está na página 1de 2

Computação II - Trabalho Prático

Introdução
Objetivo

O trabalho da disciplina consiste em projetar e desenvolver um jogo de xadrez via terminal utilizando a linguagem
Python.

Descrição

O xadrez é um esporte milenar onde dois jogadores utilizam um tabuleiro com 64 casas (dispostas como 8 linhas e
8 colunas) para controlar um conjunto de 16 peças cada: um Rei, uma Rainha/Dama, dois Bispos, dois Cavalos, duas
Torres e oito Peões. Uma partida é jogada em turnos, de forma que a cada turno um jogador escolhe e movimenta
uma peça. Cada peça possui uma movimentação específica que define a quantidade de casas e em qual direção
pode se mover. Se a movimentação levar a uma casa que é ocupada por uma peça adversária, o jogador realiza a
captura daquela peça, removendo-a do jogo.

A cada turno, o jogador deve garantir que seu Rei não seja capturado pelo adversário. Caso um movimento
possibilite a captura do Rei, há uma situação de xeque. Se não for possível executar alguma ação que livre o Rei
dessa condição, temos o chamado xeque-mate e o jogador que o sofreu perde a partida.

Diretrizes
1. O código deve, necessariamente, ser implementado utilizando os conceitos de orientação a objetos que foram
vistos no início do curso. É necessário criar o modelo de classes com os atributos e métodos que representam
cada entidade do jogo.
2. O jogador da vez deve, em um primeiro momento, selecionar uma peça. Após a seleção, o programa deve
identificar para quais casas a peça pode se mover. Por fim, o jogador deve escolher essa casa e o tabuleiro
deve ser modificado de acordo.
3. Cada peça possui sua própria movimentação e conjunto de restrições que devem ser respeitadas:
a. Rei: pode se mover uma casa em uma direção (horizontal, vertical ou diagonal). Não pode pular peças.
Captura peças de acordo com a movimentação. Não pode se colocar em xeque.
b. Dama/Rainha: pode se mover quantas casas quiser em uma direção (horizontal, vertical ou diagonal).
Captura peças de acordo com a movimentação. Não pode pular peças.
c. Bispo: pode se mover quantas casas quiser na diagonal. Captura peças de acordo com a movimentação.
Não pode pular peças.
d. Cavalo: executa sempre uma movimentação em formato de L:
i. o movimento consiste em dois passos onde o primeiro é vertical e o segundo é horizontal ou o inverso.
ii. o primeiro passo se movimenta uma casa e o segundo duas casas ou o inverso
iii. captura peças de acordo com a movimentação
iv. pode pular peças
e. Torre: pode se mover quantas casas quiser na horizontal ou vertical. Captura peças de acordo com a
movimentação. Não pode pular peças.
f. Peão
i. na primeira movimentação de cada peão, é possível se movimentar uma ou duas casas na vertical em
direção ao lado oposto do tabuleiro
ii. a partir da segunda movimentação, move-se apenas uma casa
iii. captura apenas peças que estejam a uma casa de distância nas diagonais direita ou esquerda
iv. não pode pular peças
4. A movimentação de nenhuma das peças pode colocar o rei da mesma cor em xeque
5. Não é necessário analisar condições de movimentação especiais como roque, por exemplo
6. O programa deve, a cada rodada, imprimir na tela a situação atual do tabuleiro.
7. O layout do tabuleiro deve mostrar qual peça está em cada casa seguindo o padrão <cor><nome_da_peça>.
Casas vazias devem ser representadas por *.
8. Ao escolher uma peça, as casas onde seja permitido se movimentar deverão ter algum tipo de indicação
9. A escolha das peças e das casas pode ser feita utilizando apenas os índices da matriz
10. Todos os métodos devem vir acompanhados de comentários de documentação que expliquem o que é feito e
quais os tipos dos parâmetros de entrada e das saídas

Pontuação Bônus
A proatividade em buscar conhecimento externo e implementar outras funcionalidades no trabalho pode ser
recompensada com uma pontuação bônus. Exemplos de bônus:

1. a escolha da casa para movimentação segue as indicações clássicas do xadrez, onde as linhas são números de
1 a 8 e as colunas são letras de A até H. Seu programa é capaz de traduzir a entrada para um índice da matriz
2. implementar captura en passant
3. implementar o roque
4. implementar um cronômetro
5. interface gráfica
6. outros: me surpreendam

Entregas e Avaliações
O trabalho deverá ser desenvolvido ao longo do restante do curso e será dividido em três entregas que serão
descritas a seguir.

Entrega #1
• Data: 23/12/2021 às 23:59
• Exigências
• Relatório inicial, apresentando a modelagem que será utilizada para o desenvolvimento do jogo
• Implementar as classes com métodos e atributos da seguinte forma:
o método __init__ que permita criar a classe
o definição dos métodos com comentários de documentação e instrução pass

Entrega #2
• Data: 27/01/2022
• Exigências
o Relatório parcial, apresentando correções que tenham sido feitas, mudanças e evolução do código
o Com exceção da verificação de xeque, todas as peças já devem estar se movimentando
o Funcionalidade de salvar o estado do tabuleiro em arquivo e de leitura do jogo salvo
o Inclusão de tratamento de exceções

Entrega #3 - Versão final


• Data: 24/02/2022
• Exigências
• O programa completamente funcional, permitindo que duas pessoas joguem uma partida
• Relatório final
• Geração de estatísticas de jogo e visualização em gráficos
o Quantidade de casas percorridas por cada jogador
o Média de turnos para capturar uma peça
o Média de turnos sem peça capturada

Você também pode gostar