-
Notifications
You must be signed in to change notification settings - Fork 0
ChessLogic ‐ Logica do projeto
Esta classe abstrata define a interface e comportamento básico de um movimento de xadrez, incluindo a execução e verificação se o movimento coloca o jogador em cheque.
-
A enumeração MoveType representa os tipos de movimentos em um jogo de xadrez.
-
Membros da Enumeração:
- Normal: Indica um movimento padrão.
- EnPassaint: Descreve o movimento de captura especial para peões.
- CastleKS: Refere-se ao roque pequeno (lado do rei).
- CastleQS: Refere-se ao roque grande (lado da dama).
- DoublePawn: Descreve o movimento inicial duplo de um peão.
- Promotion: Refere-se à promoção de um peão ao chegar à oitava fileira.
Implementa um movimento básico, em que uma peça é movida de uma posição para outra sem regras especiais.
-
Visão geral da classe: Explicação sobre o comportamento do peão, que avança apenas para frente e captura na diagonal, além de permitir o movimento de duas casas na sua primeira jogada.
-
Propriedades e métodos:
- Type: Define o tipo da peça como Pawn (peão).
- Color: Define a cor do jogador (branco ou preto) a quem a peça pertence.
- forward: Define a direção do movimento do peão com base na sua cor.
- CanMoveTo: Verifica se o peão pode se mover para uma posição, que deve estar dentro dos limites do tabuleiro e ser uma casa vazia.
- CanCaptureAt: Verifica se o peão pode capturar uma peça adversária em uma posição diagonal.
- ForwardMoves: Gera os movimentos de avanço, permitindo o avanço de duas casas se o peão ainda não se moveu.
- DiagonalMoves: Gera movimentos diagonais usados para capturar peças inimigas.
- GetMoves: Combina movimentos de avanço e captura em uma única lista de movimentos possíveis.
- CanCaptureOpponentKing: Verifica se o peão pode capturar o rei adversário em algum dos seus movimentos diagonais.
-
Visão geral da classe: Explicação sobre o bispo, como ele se movimenta no xadrez e o que representa no código.
-
Propriedades e métodos:
- Type: Define o tipo da peça como Bishop (bispo).
- Color: Define a cor do jogador a quem a peça pertence.
- Copy: Cria uma cópia do bispo, incluindo o estado de movimento (útil para rastrear regras como roque e outras condições).
- dirs: Define as direções diagonais nas quais o bispo pode se mover.
- GetMoves: Implementa a lógica que retorna todos os movimentos possíveis que o bispo pode fazer a partir de sua posição atual no tabuleiro.
-
Visão geral da classe: Explicação sobre o cavalo, sua movimentação e características especiais, como a capacidade de saltar sobre outras peças.
-
Propriedades e métodos:
- Type: Define o tipo da peça como Knight (cavalo).
- Color: Define a cor do jogador (branco ou preto) a quem a peça pertence.
- PotentialToPositions: Gera as posições potenciais onde o cavalo pode se mover, seguindo o padrão em "L".
- MovePositions: Filtra as posições potenciais para garantir que estão dentro dos limites do tabuleiro e que o cavalo pode se mover para elas.
- Copy: Cria uma cópia do cavalo, preservando seu estado.
- GetMoves: Gera todos os movimentos válidos do cavalo, retornando uma lista de movimentos normais.
-
Visão geral da classe: Explica o funcionamento da torre, que se move em linha reta, tanto na horizontal quanto na vertical, e pode se mover quantas casas quiser em uma direção.
-
Propriedades e métodos:
- Type: Define o tipo da peça como Rook (torre).
- Color: Define a cor do jogador (branco ou preto) a quem a peça pertence.
- dirs: Array de direções em que a torre pode se mover: norte, sul, leste e oeste.
- Copy: Cria uma nova instância da torre, preservando o estado de movimento.
- GetMoves: Retorna todos os movimentos possíveis da torre a partir de uma posição específica, gerando movimentos válidos em cada uma das direções definidas.
-
Visão geral da classe: Descreve o funcionamento da rainha, que pode se mover em qualquer direção (horizontal, vertical ou diagonal) e quantas casas quiser.
-
Propriedades e métodos:
- Type: Define o tipo da peça como Queen (rainha).
- Color: Define a cor do jogador (branco ou preto) a quem a peça pertence.
- dirs: Array de direções em que a rainha pode se mover: norte, sul, leste, oeste e diagonais.
- Copy: Cria uma nova instância da rainha, preservando o estado de movimento.
- GetMoves: Retorna todos os movimentos possíveis da rainha a partir de uma posição específica, gerando movimentos válidos em cada uma das direções definidas.
-
Visão geral da classe: Explicação sobre o rei, seu papel no jogo e as limitações de movimento.
-
Propriedades e métodos:
- Type: Define o tipo da peça como King (rei).
- Color: Define a cor do jogador (branco ou preto) a quem a peça pertence.
- dirs: Define as direções em que o rei pode se mover, cobrindo todas as direções horizontais, verticais e diagonais.
- MovePositions: Calcula as posições válidas em que o rei pode se mover, verificando os limites do tabuleiro e a presença de peças adversárias.
- GetMoves: Gera todos os movimentos possíveis do rei com base nas posições válidas calculadas.
- CanCaptureOpponentKing: Verifica se o rei pode capturar o rei adversário, essencial para as verificações de xeque.
- Roque: Há um método comentado que mostra como o roque pelo lado da rainha seria implementado. Esse método está parcialmente implementado e poderia ser ativado ou expandido.
-
Visão geral da classe: A classe Board representa o tabuleiro de xadrez e suas operações, como o gerenciamento das peças e suas posições.
-
Indexadores:
Permitem acessar ou definir uma peça no tabuleiro usando coordenadas de linha e coluna ou uma instância da classe Position.
-
Métodos:
- Initial(): Configura o tabuleiro com a posição inicial das peças.
- AddStartPieces(): Método privado que posiciona as peças no tabuleiro conforme as regras de xadrez.
- isInside(): Verifica se uma posição está dentro dos limites do tabuleiro.
- isEmpty(): Verifica se uma posição está vazia.
- PiecePositions(): Retorna todas as posições que contêm peças no tabuleiro.
- PiecePositionsFor(): Retorna todas as posições que contêm peças de um jogador específico.
- IsInCheck(): Verifica se o jogador está em xeque.
- Copy(): Cria uma cópia profunda do tabuleiro.