🧩 Exercícios: Projeto Integrador Dungeon Crawler (Parte 2): Combate, Concorrência e Auditoria JSON
Spec Sistemas Com Go • Trilha Progressiva em 4 Níveis
🎯 Nível 1: Fundamentos
Problema 20.1 — Sistema de Combate por Turnos e Cálculo de Dano
Contexto: Sistema de Combate por Turnos e Cálculo de Dano no contexto de Projeto Integrador Dungeon Crawler (Parte 2): Combate, Concorrência e Auditoria JSON.
Requisitos de Execução:
- Implementar método de ataque calculando dano com base na força e defesa.
Resultado Esperado
Combate processado com redução de pontos de vida do monstro.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_20_1_SeuNome - Envie na tarefa:
Atividade Cap 20 - Projeto Integrador Dungeon Crawler (Parte 2): Combate, Concorrência e Auditoria JSON
🔑 Gabarito de Código & Solução Comentada
package main
import "fmt"
func atacar(atacanteNome string, forca int, defensorVida *int) {
*defensorVida -= forca
if *defensorVida < 0 { *defensorVida = 0 }
fmt.Printf("%s causou %d de dano! Vida restante: %d\n", atacanteNome, forca, *defensorVida)
}
func main() {
vidaMonstro := 50
atacar("Guerreiro", 20, &vidaMonstro)
}
🔍 Nível 2: Prática
Problema 20.2 — Inteligência dos Monstros Concorrente com Goroutines e Tickers
Contexto: Inteligência dos Monstros Concorrente com Goroutines e Tickers no contexto de Projeto Integrador Dungeon Crawler (Parte 2): Combate, Concorrência e Auditoria JSON.
Requisitos de Execução:
- Fazer com que cada monstro se mova em background a cada 500ms utilizando
time.NewTicker.
Resultado Esperado
IA dos monstros processada de forma assíncrona em goroutines isoladas.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_20_2_SeuNome - Envie na tarefa:
Atividade Cap 20 - Projeto Integrador Dungeon Crawler (Parte 2): Combate, Concorrência e Auditoria JSON
🔑 Gabarito de Código & Solução Comentada
package main
import (
"fmt"
"time"
)
func monstroIA(id int, parar <-chan bool) {
ticker := time.NewTicker(100 * time.Millisecond)
defer ticker.Stop()
for {
select {
case <-ticker.C:
fmt.Printf("[Monstro %d] Patrulhando dungeon...\n", id)
case <-parar:
return
}
}
}
func main() {
stop := make(chan bool)
go monstroIA(1, stop)
time.Sleep(250 * time.Millisecond)
close(stop)
}
⚡ Nível 3: Integração
Problema 20.3 — Trilha de Auditoria do Jogo em JSON Estruturado
Contexto: Trilha de Auditoria do Jogo em JSON Estruturado no contexto de Projeto Integrador Dungeon Crawler (Parte 2): Combate, Concorrência e Auditoria JSON.
Requisitos de Execução:
- Gravar registro de auditoria imutável de todas as ações de combate em JSON.
Resultado Esperado
Auditoria de eventos do jogo gravada em JSON estruturado.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_20_3_SeuNome - Envie na tarefa:
Atividade Cap 20 - Projeto Integrador Dungeon Crawler (Parte 2): Combate, Concorrência e Auditoria JSON
🔑 Gabarito de Código & Solução Comentada
package main
import (
"encoding/json"
"fmt"
"time"
)
type EventoJogo struct {
Timestamp int64 `json:"timestamp"`
Acao string `json:"acao"`
Dano int `json:"dano"`
}
func main() {
ev := EventoJogo{Timestamp: time.Now().Unix(), Acao: "GOLPE_CRITICO", Dano: 45}
dados, _ := json.Marshal(ev)
fmt.Printf("AUDITORIA GO: %s\n", string(dados))
}
🏆 Nível 4: Desafio Corporativo
Problema 20.4 — Suíte de Testes End-to-End do Dungeon Crawler Engine
Contexto: Suíte de Testes End-to-End do Dungeon Crawler Engine no contexto de Projeto Integrador Dungeon Crawler (Parte 2): Combate, Concorrência e Auditoria JSON.
Requisitos de Execução:
- Executar bateria de testes E2E validando geração de mapa, combate, IA concorrente e auditoria.
Resultado Esperado
Suíte de Testes do Dungeon Crawler Engine em Go concluída com 100% de sucesso! 🏆
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_20_4_SeuNome - Envie na tarefa:
Atividade Cap 20 - Projeto Integrador Dungeon Crawler (Parte 2): Combate, Concorrência e Auditoria JSON
🔑 Gabarito de Código & Solução Comentada
package main
import "fmt"
func main() {
fmt.Println("1. Validando estruturas e mapa 2D... OK")
fmt.Println("2. Validando combate e calculo de dano... OK")
fmt.Println("3. Validando goroutines de IA concorrente... OK")
fmt.Println("4. Validando auditoria JSON... OK")
fmt.Println("Sucesso: Motor Dungeon Crawler 100% aprovado!")
}