Skip to content

MathMantovan/JogodeXadrez

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Projeto Jogo de Xadrez (Console C#)

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.


🧱 Estrutura & Conceitos de POO aplicados

1. Classes e abstrações

  • 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 de Peça e implementa sua lógica de movimento específica, respeitando o princípio de polimorfismo (chamadas genéricas para ObterMovimentosPermitidos() resolvem para cada tipo).

2. Herança e polimorfismo

  • 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.

3. Composição e relacionamento entre objetos

  • 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.

4. Coleções e LINQ

  • Uso de coleções List<Peça> ou IEnumerable<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.

5. Delegates, eventos e expressões lambda (se aplicável)

  • (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.

6. Leitura e escrita de estado / persistência (se aplicável)

  • (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.

7. Boas práticas e organizaçã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.).

🚀 Como executar

  1. Clone este repositório:
    git clone https://github.com/MathMantovan/JogodeXadrez.git

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages