Este repositório contém uma aplicação de xadrez desenvolvida em C# no estilo console, criada como projeto prático para exercitar os conceitos aprendidos durante o curso “C# Profissional e POO”. A ideia foi aplicar de forma concreta herança, composição, coleções, LINQ, delegates, lambdas e leitura/escrita de arquivos, modelando as regras do jogo de maneira orientada a objetos.
-
Peça (abstrata)
Uma classe base abstrata que define propriedades comuns (posição, cor, disponível) e métodos virtuais (movimentos permitidos) que devem ser sobrescritos pelas peças concretas (Rei, Rainha, Torre etc.). -
Peças específicas (Rei, Rainha, Bispo, Cavalo, Torre, Peão)
Cada classe herda dePeçae implementa sua lógica de movimento específica, respeitando o princípio de polimorfismo (chamadas genéricas paraObterMovimentosPermitidos()resolvem para cada tipo).
- Utilização da hierarquia:
Peça → (Rei, Rainha, Torre, Cavalo, Bispo, Peão) - Uso de métodos virtuais / abstract + override para especialização de comportamentos.
- Chamadas polimórficas para tratar listas de peças de forma genérica, independentemente do tipo concreto.
- A classe Tabuleiro contém uma composição de Casas e Peças, mantendo a lógica central do jogo (posicionar peças, movimentar, capturar).
- A classe Partida agrega o
Tabuleiro, controla o turno, estado de xeque/xeque-mate e histórico de jogadas.
- Uso de coleções
List<Peça>ouIEnumerable<Peça>para armazenar peças ativas e capturadas. - Uso de LINQ (por exemplo,
.Where(),.Select(),.Any()) para filtrar movimentos válidos, verificar xeque, identificar peças em risco etc.
- (Se presentes no código) Implementação de delegates ou eventos para notificar alterações de estado, capturas ou mudança de turno.
- Uso de expressões lambda para definir filtros ou predicados em consultas a coleções.
- (Se o projeto contém) Leitura/escrita de arquivos (por exemplo, salvar / carregar partida, histórico de jogadas) para praticar manipulação de fluxo de arquivos e serialização.
- Separação de responsabilidades: cada classe com responsabilidade clara (Single Responsibility).
- Métodos coesos e encapsulamento de campos internos.
- Tratamento de exceções e validações (movimentos inválidos, jogada fora do tabuleiro etc.).
- Clone este repositório:
git clone https://github.com/MathMantovan/JogodeXadrez.git