Um projeto inicial em Go para brincar com ideias de um "tiny dungeon". No estado atual, é um app de console que:
- Imprime uma saudação.
- Cria uma personagem de exemplo (struct Personagem).
- Consulta dados de heranças (ex.: "Humanos", "Fey").
- Rola dados de forma simples (função RolaDados).
Tudo está escrito e documentado em português.
- Linguagem: Go
- Gerenciamento de dependências: Go Modules (go.mod)
- Runtime/SDK recomendado: Go 1.25.x
- Containerização: Docker (build multi-stage)
main.godefinepackage maincomfunc main(), que é o ponto de entrada da aplicação e demonstra como usar os pacotespersonagemesistema.
Escolha uma das opções de setup:
- Go instalado localmente (recomendado): Go 1.25.x.
- Docker instalado, caso prefira executar em contêiner.
Notas
- O caminho do módulo é
tiny_dungeon(vejago.mod). Atualmente não há dependências externas.
Nenhuma configuração especial é necessária.
- Se for usar Go local: verifique se
go versionfunciona no terminal. - Se for usar Docker: verifique se
dockerestá instalado e ativo.
Dica (gera go.sum quando você adicionar dependências externas):
go mod tidy
Execução direta (sem build):
go run .- ou
go run main.go
- ou
Build local e execução:
- Build:
go build -o bin/tiny_dungeon . - Rodar:
./bin/tiny_dungeon- No Windows:
bin\tiny_dungeon.exe
- No Windows:
Ao rodar go run ., você poderá ver algo como:
Hello, World!
Criando a personagem:
Nome: Sophia
Herança: Humanos
As habilidades dos Humanos são: Humanos selecionam um Traço adicional da Lista de Traços.
Rodando os dados, deu: 4
Rodando os dados, deu: 2
Rodando os dados, deu: 6
Observação: os resultados dos dados variam a cada execução.
Construir a imagem:
docker build -t tiny_dungeon:latest .
Rodar o contêiner:
docker run --rm tiny_dungeon:latest
Notas sobre o Dockerfile:
- Corrija o comando para
RUN go mod download(se necessário). A formago.mod downloadé um typo. - O Dockerfile copia
go.sum, porém o repositório não contém este arquivo no momento. Se não houver dependências externas:go mod downloadserá um no-op e pode permanecer, ou- você pode remover a cópia do
go.sume também o passogo mod downloadpara simplificar.
main.go— Ponto de entrada; demonstra o uso depersonagemesistema.personagem/criaOPersonagem.go— Define a structPersonagem.herança.go— Define heranças disponíveis e a funçãoGetHerancaNome.
sistema/dados.go— FunçãoRolaDados(dados, nfaces).
go.mod— Módulo Go (module tiny_dungeon).Dockerfile— Build multi-stage para gerar binário minimalista.documentosOficiais/— PDFs de referência do sistema Tiny Dungeon (material oficial).
type Personagem struct { Nome, Heranca, Tracos, GrupoArmas, RamoFamilia, Crenca string }func GetHerancaNome(nome string) (SetHeranca, bool)retorna a herança pelo nome.func RolaDados(dados int, nfaces int)imprime no console o resultado de cada dado rolado (aleatório).
- Rodar:
go run . - Build:
go build -o bin/tiny_dungeon . - Formatar:
go fmt ./... - Vet (lint básico):
go vet ./... - Organizar módulos:
go mod tidy - Testar (quando houver testes):
go test ./...
- Nenhuma no momento.
- Quando forem introduzidas, documentaremos aqui.
- Ainda não há testes.
- Para adicionar testes: crie arquivos
*_test.goe usego test ./....
- Evoluir a lógica do jogo (regras, combate, exploração, etc.).
- Adicionar testes para a lógica central conforme for sendo implementada.
- Definir e adicionar uma licença.
- Revisar/ajustar o Dockerfile (tipos e passo
go mod download). - Considerar CI (GitHub Actions) para
go buildego test.
- Issues e PRs são bem-vindos.
- Mantenha o código e as mensagens em português quando possível.
- Ainda não há um arquivo de licença.
- Sugestão: adicionar
LICENSE(por exemplo, MIT ou Apache-2.0) e referenciar aqui.