Campo Minado CLI: Algoritmos de Expansão e Alocação Dinâmica em C++ 💣⚙️
Desenvolver um Campo Minado em ambiente de terminal exige ir muito além da exibição de caracteres: o desafio real está na gestão eficiente de memória e na garantia de uma experiência justa e fluida para o jogador. Nesta implementação em C++, foquei em resolver problemas clássicos de arquitetura de software e UX em linha de comando: - Matrizes Dinâmicas Bidimensionais: utilizei a estrutura std::vector<std::vector<T>> para permitir que o jogador defina livremente o tamanho do tabuleiro no setup inicial, superando as limitações de rigidez de arrays estáticos nativos. - Algoritmo de Expansão Iterativa ("Triple-Check"): criei uma rotina de varredura adjacente para revelar automaticamente e em cascata os blocos vazios (casas '0'). Para elevar a UX no terminal, integrei a função Sleep() para cadenciar a abertura das casas, gerando um efeito visual de animação procedural. - Garantia de Primeira Jogada Segura (Lazy Initialization): o gabarito de minas só é gerado após o primeiro clique do usuário, recalculando posições probabilísticas para garantir que o jogador nunca perca na primeira jogada. - Validação Matemática de Gameplay: implementei travas lógicas que impedem configurações onde a densidade de minas ultrapasse 50% da área útil do tabuleiro, assegurando o balanceamento do jogo.



