Capítulo 19: Projeto Integrador I: Motor Completo de Jogo de Xadrez em Python POO Pura
Especialização em Sistemas com Python & POO com Type Hints • Capítulo 19
🗺️ Mapa Conceitual do Tópico
classDiagram
class Cor {
<<enumeration>>
BRANCA
PRETA
}
class Posicao {
+int linha
+int coluna
}
class Peca {
<<abstract>>
#Cor cor
#Tabuleiro tabuleiro
+movimentos_possiveis()* list~list~bool~~
}
class Rei {
+movimentos_possiveis() list~list~bool~~
}
class Tabuleiro {
-list~list~Peca~~ pecas
+posicionar_peca(peca, posicao) void
+obter_peca(posicao) Peca
}
class PartidaXadrez {
-Tabuleiro tabuleiro
-int turno
-Cor jogador_atual
+executar_jogada(origem, destino) void
}
Peca <|-- Rei
PartidaXadrez *-- Tabuleiro
Tabuleiro o-- Peca
♟️ 1. Modelagem POO Profunda de um Motor de Xadrez
O Projeto Integrador I consolida todos os fundamentos de orientação a objetos:
- Matriz $8 \times 8$: Tabuleiro bidimensional indexado.
- Polimorfismo: Cada tipo de peça calcula sua própria matriz de movimentos legais.
- Controle de Turnos e Regras: Alternância de turnos, validação de xeque e captura de peças adversárias.
💻 Exemplo Prático e Tipado
"""
exemplo_19_projeto_sistema_xadrez.py - Tabuleiro e Conversão de Coordenadas
"""
class PosicaoXadrez:
def __init__(self, coluna: str, linha: int) -> None:
if coluna.lower() not in "abcdefgh" or not (1 <= linha <= 8):
raise ValueError(f"Posição inválida: {coluna}{linha}")
self.coluna = coluna.lower()
self.linha = linha
def para_coordenadas_matriz(self) -> tuple[int, int]:
r = 8 - self.linha
c = ord(self.coluna) - ord('a')
return r, c
if __name__ == "__main__":
pos = PosicaoXadrez("e", 4)
r, c = pos.para_coordenadas_matriz()
print(f"Posição 'e4' no tabuleiro -> Matriz [{r}, {c}]")
🔗 Recursos Pedagógicos do Capítulo 19
| Recurso Didático | Finalidade | Link de Acesso |
|---|---|---|
| 📊 Slides de Aula | Apresentação visual interativa com Dark Mode e suporte a teclado | Ver Slides |
| 🧠 Quiz Formativo | Teste interativo de fixação com feedback imediato por alternativa | Fazer Quiz |
| 💻 Exemplos de Código | Demonstrações funcionais com Type Hints e saída no console | Ver Exemplos |
| 🧩 Exercícios em 4 Níveis | Lista progressiva de fixação com gabarito em bloco colapsável | Resolver Exercícios |
| 🏗️ Capítulo Anterior | 📚 Sumário de Tópicos | 🏢 Próximo Capítulo |