using System.Collections.Generic;
public string Nome { get; set; }
public int Vida { get; set; }
public int Ataque { get; set; }
public int Experiencia { get; set; }
public List<Item> Inventario { get; set; }
public Jogador(string nome, int vida, int ataque, int experiencia)
Experiencia = experiencia;
Inventario = new List<Item>();
public string Nome { get; set; }
public int Vida { get; set; }
public int Ataque { get; set; }
public int ExperienciaRecompensa { get; set; }
public Inimigo(string nome, int vida, int ataque)
ExperienciaRecompensa = vida + ataque;
public string Nome { get; set; }
public string Nome { get; set; }
public string Descricao { get; set; }
public abstract void ExibirDescricao();
public Carro(string nome)
Descricao = "Um carro comum para se locomover.";
public override void ExibirDescricao()
Console.WriteLine("Um carro para explorar a cidade.");
Console.WriteLine(" __");
Console.WriteLine(" / \\");
Console.WriteLine(" | |");
Console.WriteLine(" \\__/ ");
public Aviao(string nome)
Descricao = "Um avião para voar pelos céus.";
public override void ExibirDescricao()
Console.WriteLine("Um avião para longas viagens.");
Console.WriteLine(" /\\");
Console.WriteLine(" / \\");
Console.WriteLine(" /----\\");
Console.WriteLine(" / \\");
class DragonBallCharacter
public string Nome { get; set; }
public string Habilidade { get; set; }
public void ExibirDescricao()
Console.WriteLine($"Um personagem de Dragon Ball: {Nome}!");
Console.WriteLine($"Habilidade especial: {Habilidade}");
public string Nome { get; set; }
public string Tipo { get; set; }
public void ExibirDescricao()
Console.WriteLine($"Um Pokemon: {Nome}!");
Console.WriteLine($"Tipo: {Tipo}");
static void Main(string[] args)
Jogador jogador = CriarJogador();
string acao = ObterAcao();
ExibirInventario(jogador);
Console.WriteLine("Saindo do jogo...");
Console.WriteLine("Ação inválida.");
Console.WriteLine("Obrigado por jogar!");
static Jogador CriarJogador()
Console.WriteLine("Bem-vindo ao RPG Básico em C#!");
Console.Write("Digite o nome do seu personagem: ");
string nome = Console.ReadLine();
Jogador jogador = new Jogador(nome, 100, 10, 0);
Console.WriteLine($"Bem-vindo, {jogador.Nome}!");
static void ExibirStatus(Jogador jogador)
Console.WriteLine("--- Status do Jogador ---");
Console.WriteLine($"Nome: {jogador.Nome}");
Console.WriteLine($"Vida: {jogador.Vida}");
Console.WriteLine($"Ataque: {jogador.Ataque}");
Console.WriteLine($"Experiência: {jogador.Experiencia}");
Console.WriteLine("--------------------------");
static string ObterAcao()
Console.WriteLine("O que você gostaria de fazer?");
Console.WriteLine("Opções: Explorar, Curar, Inventario, Sair");
Console.Write("Digite sua ação: ");
return Console.ReadLine();
static void Explorar(Jogador jogador)
Console.WriteLine("Você começa a explorar...");
Random random = new Random();
int evento = random.Next(0, 5);
EncontrarInimigo(jogador);
EncontrarVeiculo(jogador);
EncontrarDragonBallCharacter();
Console.WriteLine("Você não encontra nada de interessante.");
static void EncontrarInimigo(Jogador jogador)
Console.WriteLine("Você encontrou um inimigo!");
Random random = new Random();
string[] nomesInimigos = { "Goblin", "Esqueleto", "Slime" };
string nomeInimigo = nomesInimigos[random.Next(0, nomesInimigos.Length)];
int vidaInimigo = random.Next(20, 50);
int ataqueInimigo = random.Next(5, 10);
Inimigo inimigo = new Inimigo(nomeInimigo, vidaInimigo, ataqueInimigo);
Console.WriteLine($"Um {inimigo.Nome} apareceu!");
bool batalhaAtiva = true;
Console.WriteLine("--- Batalha ---");
Console.WriteLine($"{jogador.Nome}: Vida = {jogador.Vida}");
Console.WriteLine($"{inimigo.Nome}: Vida = {inimigo.Vida}");
Console.WriteLine("---------------");
Console.WriteLine("O que você quer fazer? (Atacar/Fugir)");
string acaoBatalha = Console.ReadLine().ToLower();
int danoJogador = jogador.Ataque + random.Next(-2, 3);
int danoInimigo = inimigo.Ataque + random.Next(-1, 2);
inimigo.Vida -= danoJogador;
jogador.Vida -= danoInimigo;
Console.WriteLine($"Você ataca o {inimigo.Nome} e causa {danoJogador} de dano!");
Console.WriteLine($"{inimigo.Nome} ataca você e causa {danoInimigo} de dano!");
Console.WriteLine($"Você derrotou o {inimigo.Nome}!");
jogador.Experiencia += inimigo.ExperienciaRecompensa;
Console.WriteLine($"Você ganhou {inimigo.ExperienciaRecompensa} de experiência!");
Console.WriteLine("Você morreu!");
Console.WriteLine("Você foge da batalha...");
Console.WriteLine("Ação inválida.");
static void EncontrarItem(Jogador jogador)
Console.WriteLine("Você encontrou um item!");
Random random = new Random();
string[] nomesItens = { "Poção de Cura", "Espada enferrujada", "Escudo de madeira" };
string nomeItem = nomesItens[random.Next(0, nomesItens.Length)];
Item itemEncontrado = new Item(nomeItem);
Console.WriteLine($"Você encontrou uma {itemEncontrado.Nome}!");
jogador.Inventario.Add(itemEncontrado);
Console.WriteLine($"Você adicionou {itemEncontrado.Nome} ao seu inventário.");
static void Curar(Jogador jogador)
List<Item> pcoesDeCura = jogador.Inventario.FindAll(item => item.Nome == "Poção de Cura");
if (pcoesDeCura.Count > 0)
Console.WriteLine("Você usou uma poção de cura e recuperou 20 pontos de vida.");
jogador.Inventario.Remove(pcoesDeCura[0]);
Console.WriteLine("Você não possui poções de cura.");
static void ExibirInventario(Jogador jogador)
Console.WriteLine("--- Inventário ---");
if (jogador.Inventario.Count == 0)
Console.WriteLine("Seu inventário está vazio.");
Dictionary<string, int> contagemItens = new Dictionary<string, int>();
foreach (Item item in jogador.Inventario)
if (contagemItens.ContainsKey(item.Nome))
contagemItens[item.Nome]++;
contagemItens[item.Nome] = 1;
foreach (var item in contagemItens)
Console.WriteLine($"- {item.Key}: {item.Value}");
Console.WriteLine("------------------");
static void EncontrarVeiculo(Jogador jogador)
Console.WriteLine("Você encontrou um veículo!");
Random random = new Random();
int tipoVeiculo = random.Next(0, 2);
Veiculo veiculoEncontrado;
veiculoEncontrado = new Carro("Carrinho");
veiculoEncontrado = new Aviao("Planador");
Console.WriteLine($"Você encontrou um(a) {veiculoEncontrado.Nome}!");
veiculoEncontrado.ExibirDescricao();
Console.WriteLine("Gostaria de usar o veiculo? (sim/nao)");
string resposta = Console.ReadLine();
if (resposta.ToLower() == "sim")
Console.WriteLine($"Você está usando {veiculoEncontrado.Nome}!");
static void EncontrarDragonBallCharacter()
Console.WriteLine("Você encontrou um personagem de Dragon Ball!");
Random random = new Random();
string[] nomes = { "Goku", "Vegeta", "Piccolo" };
string[] habilidades = { "Kamehameha", "Final Flash", "Makankosappo" };
string nome = nomes[random.Next(0, nomes.Length)];
string habilidade = habilidades[random.Next(0, habilidades.Length)];
DragonBallCharacter personagem = new DragonBallCharacter { Nome = nome, Habilidade = habilidade };
personagem.ExibirDescricao();
static void EncontrarPokemon()
Console.WriteLine("Você encontrou um Pokémon!");
Random random = new Random();
string[] nomes = { "Pikachu", "Charmander", "Bulbasaur" };
string[] tipos = { "Elétrico", "Fogo", "Grama" };
string nome = nomes[random.Next(0, nomes.Length)];
string tipo = tipos[random.Next(0, tipos.Length)];
PokemonCharacter pokemon = new PokemonCharacter { Nome = nome, Tipo = tipo };
pokemon.ExibirDescricao();