Loading repository data…
Loading repository data…
schmidtronaldo / repository
Desafio Bootcamp DIO-NTT-Java criando um jogo da forca
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Este é um projeto de um jogo da forca via console, escrito em Java, utilizando Gradle como sistema de build, com foco em Clean Code e aplicação de Design Patterns.
| Padrão | Aplicado em | Finalidade |
|---|---|---|
| Factory | WordFactory | Geração de palavras dinamicamente |
| Singleton | WordService | Gerenciamento centralizado de palavras |
| MVC (Model-View-Controller) | Toda a estrutura | Separação de responsabilidades |
| Value Object | Word | Encapsulamento e normalização da palavra secreta |
com.dio.jogo/
├── Main.java # Ponto de entrada
├── controller/
│ └── GameController.java # Gerencia o fluxo do jogo
├── core/
│ ├── Game.java # Lógica principal do jogo
│ ├── Word.java # Objeto de valor para a palavra
│ └── GameState.java # Representa o estado atual do jogo
├── service/
│ └── WordService.java # Singleton para acesso à WordFactory
├── factory/
│ └── WordFactory.java # Gera palavras aleatórias
├── ui/
│ └── ConsoleUI.java # Interface com o usuário via console
└── utils/
└── InputReader.java # Leitura validada de caracteres
git clone https://github.com/schmidtronaldo/JogoDaForca.git
cd jogo-da-forca
2. **Compile o projeto com Gradle:**
```bash
./gradlew build
```
3. **Execute o jogo:**
```bash
Vá até a classe Main e clique em run no icone de play
```
Observaçao:
- comando ./gradlew run ou ./gradlew bootRun apresenta erro ao tentar acessar a classe Scanner
> ⚠️ O Gradle precisa estar instalado (ou use o wrapper incluído: `./gradlew`).
---
## 🧪 Exemplos de Execução
```
Palavra: _ _ _ _ _
Tentativas restantes: 6
Letras tentadas: []
Digite uma letra: A
Palavra: _ A _ A _
Tentativas restantes: 6
Letras tentadas: [A]
...
```
---
## ✍️ Considerações Finais
* Fácil de expandir para **interface gráfica** com Swing/JavaFX, trocando apenas a camada de `UI`.
* A lógica de jogo está desacoplada da interface, respeitando boas práticas de desenvolvimento.
* Preparado para testes unitários futuros com frameworks como **JUnit**.
---
## 📌 Autor
Desenvolvido como parte de um projeto de estudo sobre Java, Clean Code e Design Patterns.
---