Percursos
/
Kotlin
Kotlin
/
Exercícios
/
Personagem de D&D
Personagem de D&D

Personagem de D&D

Fácil

Introdução

Depois de semanas de expetativa, tu e os teus amigos reúnem-se para a vossa primeira partida de Dungeons & Dragons (D&D). Como esta é a primeira sessão do jogo, cada jogador tem de criar uma personagem para jogar. Os atributos da personagem são determinados pelo lançamento de dados de 6 faces, mas onde estão os dados? Com um sobressalto, percebes que os teus amigos estão à espera que tu arranjes os dados; afinal de contas, foi tua ideia jogar D&D! Entras em pânico ao perceberes que te esqueceste de trazer os dados, o que significaria não haver jogo de D&D. Como tens alguns conhecimentos básicos de programação, arranjas rapidamente uma solução: vais escrever um programa para simular lançamentos de dados.

Instruções

Num jogo de Dungeons & Dragons, cada jogador começa por gerar uma personagem com a qual possa jogar. Essa personagem tem, entre outras coisas, seis atributos: strength, dexterity, constitution, intelligence, wisdom e charisma. Estes seis atributos têm valores determinados aleatoriamente. Fazes isto lançando quatro dados de 6 faces e registando a soma dos três dados mais altos. Fazes isto seis vezes, uma vez para cada atributo.

Os hitpoints iniciais da tua personagem são 10 + o modificador de constitution da tua personagem. Encontras o modificador de constitution da tua personagem subtraindo 10 à constitution da tua personagem, dividindo por 2 e arredondando para baixo.

Escreve um gerador aleatório de personagens que siga as regras acima.

Por exemplo, os seis lançamentos de quatro dados podem ser assim:

  • 5, 3, 1, 6: descartas o 1 e somas 5 + 3 + 6 = 14, que atribuis a strength.
  • 3, 2, 5, 3: descartas o 2 e somas 3 + 5 + 3 = 11, que atribuis a dexterity.
  • 1, 1, 1, 1: descartas o 1 e somas 1 + 1 + 1 = 3, que atribuis a constitution.
  • 2, 1, 6, 6: descartas o 1 e somas 2 + 6 + 6 = 14, que atribuis a intelligence.
  • 3, 5, 3, 4: descartas o 3 e somas 5 + 3 + 4 = 12, que atribuis a wisdom.
  • 6, 6, 6, 6: descartas o 6 e somas 6 + 6 + 6 = 18, que atribuis a charisma.

Como a constitution é 3, o modificador de constitution é -4 e os hitpoints são 6.

Note

A maioria das linguagens de programação tem geradores (pseudo)aleatórios, mas poucas linguagens de programação são feitas para lançar dados. Uma dessas linguagens é Troll.

Editar via GitHub A ligação abre numa nova janela ou separador
Kotlin Exercism

Estás pronto para começar Personagem de D&D?

Inscreve-te no Exercism para aprenderes e dominares Kotlin com 88 exercícios, e mentoria humana real, tudo grátis.

Mergulha a fundo em Personagem de D&D!

Exploramos como gerar lançamentos de dados (aparentemente) aleatórios. Vais aprender sobre sementes, números pseudoaleatórios e algumas armadilhas comuns. Por fim, vemos porque é que os testes baseados em propriedades são excelentes para testar funções que devolvem valores aleatórios.