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