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:

  1. 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)

  1. Salve o arquivo como: Atividade_20_1_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_20_2_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_20_3_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_20_4_SeuNome
  2. 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!")
}