public static Inimigos CriaçãoInimigos(TipoEnimigo tipoEnimigo)
        {
            Inimigos novoInimigo = new Inimigos();

            switch (tipoEnimigo)
            {
            case TipoEnimigo.Rato:
                novoInimigo.nome      = "Rato";
                novoInimigo.vida      = 10;
                novoInimigo.vidaTotal = 10;
                novoInimigo.força     = 3;
                novoInimigo.xpGanho   = 50;
                return(novoInimigo);

            case TipoEnimigo.Esqueleto:
                novoInimigo.nome      = "Esqueleto";
                novoInimigo.vida      = 15;
                novoInimigo.vidaTotal = 15;
                novoInimigo.força     = 5;
                novoInimigo.xpGanho   = 15;
                return(novoInimigo);

            case TipoEnimigo.Mulher:
                novoInimigo.nome      = "Mulher Desconhecida";
                novoInimigo.vida      = 350;
                novoInimigo.vidaTotal = 350;
                novoInimigo.força     = 10;
                novoInimigo.xpGanho   = 1500;
                return(novoInimigo);
            }
            return(novoInimigo);
        }
        public void AtualizaBatalhaConsole(Personagem jogador1, Inimigos inimigo, int dano, string turno, bool autoAtaque = false)
        {
            Console.Clear();
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine();
            Console.WriteLine($"               [{jogador1.nome}] Nivel: [{jogador1.nivel}]  -  EXP: [{jogador1.xp}]                        ");
            Console.WriteLine();
            Console.WriteLine($"║    Vida do {inimigo.nome}: [{inimigo.vida}]  [{atualizaBarraVida(inimigo.vidaTotal, inimigo.vida)}]  ║  Sua Vida: [{jogador1.vidaAtual}]  [{atualizaBarraVida(jogador1.vidaTotal, jogador1.vidaAtual)}] ");
            Console.WriteLine();
            if (turno == "jogador")
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine($"║ Seu Turno:           ");
                Console.WriteLine($"║    Seu dano foi: [{dano}]      ");
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine($"║ Turno do seu Inimigo:           ");
                Console.WriteLine($"║    Dano do seu Inimigo: [{dano}]      ");
            }

            if (!autoAtaque)
            {
                Console.WriteLine();
                Console.WriteLine("Pressione qualquer tecla para continuar ");
                Console.ReadKey();
            }
            else
            {
                Thread.Sleep(300);
            }
        }
        public void AutoAtacarinimigo(Personagem jogador1, Inimigos inimigo)
        {
            Random rdn  = new Random();
            int    dano = rdn.Next(0, inimigo.força);

            dano = (dano - jogador1.itensEquipadoAmadura.armadura < 0 ? 0 : dano - jogador1.itensEquipadoAmadura.armadura);
            jogador1.vidaAtual = (jogador1.vidaAtual - dano < 0 ? 0 : jogador1.vidaAtual - dano);
            AtualizaBatalhaConsole(jogador1, inimigo, dano, "inimigo", true);
        }
 public void MontaStatusVidaInicial(Personagem jogador1, Inimigos inimigo)
 {
     Console.Clear();
     Console.ForegroundColor = ConsoleColor.White;
     Console.WriteLine();
     Console.WriteLine($"               [{jogador1.nome}] Nivel: [{jogador1.nivel}]  -  EXP: [{jogador1.xp}]                        ");
     Console.WriteLine();
     Console.WriteLine($"║    Vida do {inimigo.nome}: [{inimigo.vida}]  [{atualizaBarraVida(inimigo.vidaTotal, inimigo.vida)}]  ║  Sua Vida: [{jogador1.vidaAtual}]  [{atualizaBarraVida(jogador1.vidaTotal, jogador1.vidaAtual)}] ");
     Console.WriteLine();
     Thread.Sleep(800);
 }
        public void InicioBatalha(Personagem jogador1, Inimigos inimigo)
        {
            Console.Clear();
            MontaStatusBatalha(jogador1, inimigo);
            string resposta = Console.ReadLine();

            if (!Configuracoes.ComandosValidosCombate().Any(l => l == resposta))
            {
                InicioBatalha(jogador1, inimigo);
            }
            Batalhar(jogador1, inimigo, resposta);
        }
        public void Atacar(Personagem jogador1, Inimigos inimigo)
        {
            Random rdn = new Random();
            int    dano;

            if (jogador1.classe == Personagem.Classes.Mago)
            {
                dano = rdn.Next(0, jogador1.inteligencia) + jogador1.itensEquipadoArma.dano;
            }
            else
            {
                dano = rdn.Next(0, jogador1.força) + jogador1.itensEquipadoArma.dano;
            }
            inimigo.vida = (inimigo.vida - dano < 0 ? 0 : inimigo.vida - dano);
            AtualizaBatalhaConsole(jogador1, inimigo, dano, "jogador");
        }
 public void MontaStatusBatalha(Personagem jogador1, Inimigos inimigo)
 {
     Console.ForegroundColor = ConsoleColor.White;
     Console.WriteLine($"               [{jogador1.nome}]   ║  Sua Vida: [{jogador1.vidaAtual}]  [{atualizaBarraVida(jogador1.vidaTotal, jogador1.vidaAtual)}] ");
     Console.WriteLine();
     Console.WriteLine($"                                Nivel: [{jogador1.nivel}] ");
     Console.WriteLine($"       XP Atual: [{jogador1.xp}] {atualizaBarraXP(jogador1.xpProxNivel, jogador1.xp)} Proximo Nível: {jogador1.xpProxNivel} ");
     Console.WriteLine();
     Console.WriteLine($"               Você encontrou um [{inimigo.nome}]                       ");
     Console.WriteLine();
     Console.WriteLine($"╔════════════════════════════════╗           ║Sua Vida: [{jogador1.vidaAtual}]      ");
     Console.WriteLine($"║  #=# Escolha sua Ação: #=#     ║           ║Sua Defesa: [{jogador1.itensEquipadoAmadura.armadura}]   ");
     Console.WriteLine($"║════════════════════════════════║           ║Sua Dano: [{jogador1.força}]      ");
     Console.WriteLine($"║  [1]-Lutar contra o monstro.   ║           ║Sua Dinheiro: [{jogador1.gold}g {jogador1.silver}s]        ");
     Console.WriteLine($"║  [2]-Correr para longe.        ║           ║Monstro Nome : [{inimigo.nome}]        ");
     Console.WriteLine($"║  [3]-Auto-Ataque.              ║           ║Monstro Vida: [{inimigo.vida}]      ");
     Console.WriteLine($"╚════════════════════════════════╝           ║Monstro Ataque: [{inimigo.força}]     ");
 }
        public void parte1(Personagem jogador1)
        {
            Console.Clear();
            Configuracoes.MontaPainelDialogos("Era tarde da noite e você estava em uma taverna bebendo cerveja você acabara de voltar de um trabalho, escoltar Sir Benish até as vilas mais distantes do castelo para recolher os impostos da colheita de verão. Um trabalho relativamente simples e que lhe rendeu um pagamento de 5 moedas de ouro, que você gastara na taverna com cerveja e gorjetas para os bardos e dançarinas.", "Narrador");
            Configuracoes.MontaPainelDialogos("Entre uma cerveja e outra, entra uma mulher na taverna. Ela estava vestindo um gibão de couro fervido, uma roupa nada usual para uma mulher. Ela entra na caverna com um ar de espanto e medo, e se dirige até o balcão, Tira de uma pequena bolsa de couro que carregava consigo um pergaminho coloca na bancada.", "Narrador");
            Configuracoes.MontaPainelDialogos("Mesmo sem ouvir a conversa, você nota que ela está tentando vender o pergaminho ao taverneiro. O taverneiro faz um sinal que não quer comprar nada e a manda embora com um gesto, então a mulher olha em volta e se dirige até sua mesa.", "Narrador");
            Configuracoes.MontaPainelDialogos("Boa noite senhor, notei pelas suas vestimentas que és um aventureiro, estou vendendo este pergaminho que leva a um tesouro a muito esquecido, você gostaria de compra-lo? Estou vendendo por 50 moedas de ouro.", "Mulher");
            Console.Clear();

            List <string> opcoesRespostas = new List <string>();

            opcoesRespostas.Add("[1] – Gostaria sim, mas não tenho toda essa quantia de dinheiro.");
            opcoesRespostas.Add("[2] – Não tenho interesse nenhum nisso.");
            opcoesRespostas.Add("[3] - Ei este pergaminho me pertence (roubar pergaminho)");
            Configuracoes.MontaPainelDialogosComOpeçoesRespostas(opcoesRespostas, jogador1.nome, out string valorSelecionado);
            resposta = valorSelecionado;
            VarificaResposta(resposta, jogador1);
            if (resposta == "1")
            {
                Configuracoes.MontaPainelDialogos("Hmmm, o que podemos fazer é o seguinte, você me leva até lá e dividimos o valor do tesouro", "Mulher");
                Configuracoes.MontaPainelDialogos("Claro vamos nessa.", jogador1.nome);
            }
            if (resposta == "2")
            {
                Configuracoes.MontaPainelDialogos("Posso saber o motivo?", "Mulher");
                Configuracoes.MontaPainelDialogos("Não tenho dinheiro.", jogador1.nome);
                Configuracoes.MontaPainelDialogos("Hmmm, o que podemos fazer é o seguinte, você me leva até lá e dividimos o valor do tesouro.", "Mulher");
                Configuracoes.MontaPainelDialogos("Claro, vamos nessa.", jogador1.nome);
            }
            if (resposta == "3")
            {
                Configuracoes.MontaPainelDialogos("Ei, Isso é meu.", "Mulher");
                Configuracoes.MontaPainelDialogos("A mulher começa a falar palavras incompreensíveis, seus olhos ficam escuros, e uma aura negra fica em sua volta.", "Narrador");
                Inimigos         inimigo          = Inimigos.CriaçãoInimigos(Inimigos.TipoEnimigo.Mulher);
                SistemaDeBatalha SistemaDeBatalha = new SistemaDeBatalha();
                SistemaDeBatalha.InicioBatalha(jogador1, inimigo);
            }
            Console.WriteLine("ccccccccccccccccccccccccccc");
            resposta = Console.ReadLine();
        }
        public void Batalhar(Personagem jogador1, Inimigos inimigo, string resposta)
        {
            if (!Configuracoes.ComandosValidosCombate().Any(l => l == resposta))
            {
                return;
            }
            MontaStatusVidaInicial(jogador1, inimigo);
            fimDaBatalha = false;
            while (!fimDaBatalha)
            {
                while (resposta == "3")
                {
                    while (inimigo.vida >= 1)
                    {
                        AutoAtacar(jogador1, inimigo);
                        AutoAtacarinimigo(jogador1, inimigo);
                        if (jogador1.vidaAtual <= 0)
                        {
                            MorteDoJogador(jogador1);
                        }
                    }
                    fimDaBatalha = true;
                    resposta     = "matou";
                    jogador1.xp  = jogador1.xp + inimigo.xpGanho;
                }
                while (resposta == "1")
                {
                    while (inimigo.vida >= 1)
                    {
                        Atacar(jogador1, inimigo);
                        Atacarinimigo(jogador1, inimigo);
                        if (jogador1.vidaAtual <= 0)
                        {
                            MorteDoJogador(jogador1);
                        }
                    }
                    fimDaBatalha = true;
                    resposta     = "matou";
                    jogador1.xp += inimigo.xpGanho;
                }
                while (resposta == "2")
                {
                    Random rdn    = new Random();
                    int    correr = rdn.Next(1, 23);
                    if (correr == 1)
                    {
                        Console.WriteLine("Voce correu do inimigo");
                        resposta     = "correu";
                        fimDaBatalha = true;
                    }

                    else
                    {
                        Console.WriteLine("Voce falhou em correr do inimigo");
                        Atacarinimigo(jogador1, inimigo);
                        InicioBatalha(jogador1, inimigo);
                        fimDaBatalha = false;
                    }
                }
            }
            if (resposta == "matou")
            {
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine($"Você Derrotou o [{inimigo.nome}] Parabéns =)");
                Console.WriteLine("XP ganho: " + inimigo.xpGanho);
                Console.WriteLine("XP Total: " + jogador1.xp);
                MusicaDaVitoria();
                Console.WriteLine("Pressione qualquer tecla para continuar ");

                CalcularNivel(jogador1);
            }
            if (resposta == "correu")
            {
                Console.WriteLine("Boa");
            }
            Console.ReadKey();
        }
        public void inicio()
        {
            try
            {
                seleção = "0";

                while (seleção == "0")
                {
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.Clear();
                    Console.WriteLine("Mundo de Mystara");
                    Console.WriteLine("");
                    Console.WriteLine("");
                    Console.WriteLine("");
                    Console.WriteLine("");
                    Console.WriteLine("Digite 1 para iniciar o jogo");
                    Console.WriteLine("Digite 2 para ir para o sobre");
                    Console.WriteLine("Digite 3 para testar o sistema de batalha");
                    Console.WriteLine("Digite 4 para testar o sistema de comprade item");
                    Console.WriteLine("Digite 5 para ver os comandos basicos");
                    seleção       = Console.ReadLine();
                    selecaoValida = false;
                    if (seleção == "1")
                    {
                        selecaoValida = true;
                    }
                    if (seleção == "2")
                    {
                        Configuracoes.MontaPainelDialogos("Olá pessoas, 0/ Esse projeto teve início em 2017 quando comecei a trabalhar como desenvolvedor, a ideia era aprender c# através do desenvolvimento de um jogo de RPG todo textual. Foi a maneira mais legal que eu encontrei para aplicar os conhecimentos adquiridos nas aulas. Encorajo a todos que “brinquem” de fazer um jogo também, ou se quiser contribuir nesse projeto só dar um pull request =D.", "Marcio Zamperetti");
                        Console.ReadKey();
                        seleção       = "0";
                        selecaoValida = true;
                    }
                    if (seleção == "3")
                    {
                        selecaoValida = true;
                        Personagem jogador1 = new Personagem();
                        jogador1.CriarPersonagem(jogador1);
                        while (seleção == "3")
                        {
                            Inimigos         inimigo          = Inimigos.CriaçãoInimigos(Inimigos.TipoEnimigo.Rato);
                            SistemaDeBatalha SistemaDeBatalha = new SistemaDeBatalha();
                            SistemaDeBatalha.InicioBatalha(jogador1, inimigo);
                        }
                    }
                    if (seleção == "4")
                    {
                        selecaoValida = true;
                        Personagem jogador1 = new Personagem();
                        Console.WriteLine("Total de gold do personagem:");
                        jogador1.gold = Convert.ToInt32(Console.ReadLine());
                        Console.WriteLine("Total de silver do personagem:");
                        jogador1.silver = Convert.ToInt32(Console.ReadLine());
                        Console.WriteLine("Nome do item a ser comprado:");
                        string nome = Console.ReadLine();
                        Itens  item = new Itens();
                        item.nome = nome;
                        Console.WriteLine("Valor do item a ser comprado em silver:");
                        int valor = Convert.ToInt32(Console.ReadLine());
                        jogador1.ComprarItem(jogador1, valor, item);
                    }
                    if (seleção == "5")//Lista de comandos basicos
                    {
                        selecaoValida = true;
                        Console.WriteLine("Lista de comandos basicos:");
                        Console.WriteLine("olhar bag");
                        Console.WriteLine("remover item");
                        Console.WriteLine("beber poção");
                        Console.WriteLine("Digite algum comando para testar sua ação:");
                        seleção = Console.ReadLine();
                    }
                    if (seleção == "olhar bag")
                    {
                        selecaoValida = true;
                        Personagem jogador1 = new Personagem();
                        Itens      novoItem = new Itens();
                        novoItem.nome = "Espada Longa";
                        jogador1.AdicionarItemNaBag(jogador1, novoItem);
                        jogador1.OlharBag(jogador1);
                        Console.ReadLine();
                    }
                    if (seleção == "remover item")
                    {
                        selecaoValida = true;
                        Console.WriteLine("Qual item você gostaria de remover da sua bag?");
                        string nomeItem = Console.ReadLine();
                        Itens  novoItem = new Itens();
                        novoItem.nome = nomeItem;
                        Personagem jogador1 = new Personagem();
                        jogador1.RemoverItemNaBag(jogador1, novoItem);
                    }
                    if (seleção == "beber poção")
                    {
                        selecaoValida = true;
                        string     nomePoçao = "poção pequena";
                        Personagem jogador1  = new Personagem();
                        Itens      novoItem  = new Itens();
                        novoItem.nome = nomePoçao;
                        jogador1.AdicionarItemNaBag(jogador1, novoItem);
                        Console.WriteLine("primeiro didgite 'olhar bag' para ver os seus itens na bag");
                        Console.ReadLine();
                        jogador1.OlharBag(jogador1);
                        Console.WriteLine("Qual poção você gostaria de beber?");
                        nomePoçao = Console.ReadLine();
                        jogador1.BeberPocao(jogador1, novoItem);
                    }
                    if (selecaoValida == false)
                    {
                        inicio();
                    }
                }
            }
            catch
            {
                Console.WriteLine("Selecione uma opção valida");
                inicio();
            }
        }