Simulador de Dado de RPG em Python

Se você já jogou RPG de mesa, sabe que os dados são parte essencial da diversão.

Dados de 4, 6, 8, 10, 12, 20 e até 100 lados são usados para definir ações, ataques, acertos críticos e muito mais.

Mas e se você pudesse substituir os dados físicos por um simulador em Python?
É exatamente isso que vamos criar neste artigo: um simulador de dado de RPG simples, funcional e expansível.

Este projeto é perfeito para iniciantes, pois envolve:

  • Uso da biblioteca random para gerar números aleatórios.

  • Estruturas de repetição (whilefor).

  • Entrada de dados (input).

  • Funções para organizar o código.


🔹 1. Como funciona o simulador?

A ideia é simples:

  1. O usuário escolhe qual dado quer rolar (por exemplo, D6D20, etc.).

  2. O programa sorteia um número entre 1 e o valor máximo do dado.

  3. O resultado é exibido no terminal.

  4. O usuário pode rolar novamente ou encerrar o programa.


🔹 2. Importando bibliotecas

Vamos precisar apenas do módulo random, que já vem no Python.

import random

🔹 3. Estrutura básica de rolagem

Podemos criar uma função simples para rolar um dado:

def rolar_dado(lados):
    return random.randint(1, lados)

Se chamarmos rolar_dado(20), por exemplo, teremos um resultado de 1 a 20.


🔹 4. Criando o simulador interativo

Agora, vamos permitir que o jogador escolha qual dado rolar.

import random

def rolar_dado(lados):
    return random.randint(1, lados)

def simulador():
    print("🎲 Bem-vindo ao Simulador de Dados de RPG!")
    
    while True:
        dado = input("\nDigite o dado que deseja rolar (ex: D6, D20) ou 'sair' para encerrar: ").lower()
        
        if dado == "sair":
            print("👋 Encerrando o simulador. Até a próxima aventura!")
            break
        
        if dado.startswith("d") and dado[1:].isdigit():
            lados = int(dado[1:])
            resultado = rolar_dado(lados)
            print(f"🎲 Você rolou um {dado.upper()} e saiu: {resultado}")
        else:
            print("⚠️ Entrada inválida! Tente no formato correto (ex: D6, D12, D20).")

🔹 5. Rodando várias vezes

Às vezes, precisamos rolar mais de um dado ao mesmo tempo (exemplo: 3d6).
Vamos adicionar essa funcionalidade:

import random

def rolar_varios_dados(quantidade, lados):
    resultados = [random.randint(1, lados) for _ in range(quantidade)]
    return resultados, sum(resultados)

def simulador():
    print("🎲 Simulador de Dados de RPG")
    
    while True:
        comando = input("\nDigite o dado (ex: D6, 3D20) ou 'sair' para encerrar: ").lower()
        
        if comando == "sair":
            print("👋 Encerrando o simulador. Boa sorte nas suas aventuras!")
            break
        
        if "d" in comando:
            partes = comando.split("d")
            
            if partes[0] == "":  # Exemplo: "d20"
                quantidade = 1
            else:
                quantidade = int(partes[0])
            
            if partes[1].isdigit():
                lados = int(partes[1])
                resultados, soma = rolar_varios_dados(quantidade, lados)
                print(f"🎲 Resultado dos {quantidade}D{lados}: {resultados} (Soma: {soma})")
            else:
                print("⚠️ Número de lados inválido.")
        else:
            print("⚠️ Entrada inválida. Use o formato correto (ex: D6, 2D10, 3D20).")

🔹 6. Exemplo de uso

🎲 Simulador de Dados de RPG

Digite o dado (ex: D6, 3D20) ou 'sair' para encerrar: D20
🎲 Resultado dos 1D20: [17] (Soma: 17)

Digite o dado (ex: D6, 3D20) ou 'sair' para encerrar: 3D6
🎲 Resultado dos 3D6: [4, 6, 2] (Soma: 12)

Digite o dado (ex: D6, 3D20) ou 'sair' para encerrar: sair
👋 Encerrando o simulador. Boa sorte nas suas aventuras!

🔹 7. Melhorias possíveis

Esse simulador já é funcional, mas você pode deixá-lo ainda mais interessante:

✅ Interface gráfica (GUI) com Tkinter ou PyQt.
✅ Adicionar modificadores (exemplo: 1D20+3).
✅ Registrar histórico de rolagens em um arquivo .txt.
✅ Sistema de cores e emojis para deixar a saída mais divertida.
✅ Modo “mestre de RPG”, permitindo salvar pré-configurações de rolagens.


🔹 8. Conclusão

Neste artigo, você aprendeu a:

  • Usar a função random.randint() para simular dados.

  • Criar funções para rolar um ou vários dados.

  • Interpretar comandos como D20 ou 3D6.

  • Deixar o jogo interativo e extensível.

simulador de dado de RPG em Python é um projeto simples, mas muito útil para jogadores e mestres de RPG. Além disso, é um ótimo exercício para treinar entrada de dados, loops e manipulação de strings.

Comentários

Postagens mais visitadas deste blog

Gerando Relatórios em PDF com Python (ReportLab e FPDF)

Manipulação de Arquivos no C#: Como Ler, Escrever e Trabalhar com Arquivos de Forma Simples

Laços de Repetição em Python: Conceitos e Exemplos Práticos