none
Como criar um "voltar" no Console Application? RRS feed

  • Pergunta

  • Cada ação que o usuário faz dentro do programa, acontece um Console.Clear(); para limpar a tela em que ele está, e abrir a função escolhida...

    Só que chega uma parte, em que ele deve voltar ao menu(tela principal onde ele abriu o programa)...

    Só que eu não sei como fazer isso... Tentei usar o while, mas ficou meio "cabuloso"... Alguém tem alguma dica melhor?

    Obrigado, e até mais

    sexta-feira, 6 de dezembro de 2013 18:38

Respostas

  • Opa!

    Veja se é isso que você quer, parente... Ctrl+C ... Ctrl+V

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Jogo
    {
        class Program
        {
            static string personagem;
            static string nome_do_usuario;
            static string letra_da_acao;
            static string mundo_escolhido;
            static string resposta_shop;
            static string resposta_do_duelo;
            static string level_personagem = "0";
            static string voltarparaomenu;
    
            //MAGIAS
            static double varinhanegra = Convert.ToDouble("50");
            static double abracadabra = Convert.ToDouble("38");
    
            //MÁGICO
            static string ataquemagico = "30";
            static double goldmagico = Convert.ToDouble("0");
            static string xpmagico = "0";
    
            //DUELO
            static int total_de_duelos;
    
            static void Main(string[] args)
            {
                {
                    do //while (personagem != "S");
                    {
                        //TELA INICIAL
                        Console.WriteLine("Bem vindo!");
                        Console.WriteLine("Digite a letra correspondente ao personagem que deseja jogar:");
                        Console.WriteLine();
                        Console.WriteLine("(M)ágico");
                        Console.WriteLine("(L)utador");
                        Console.WriteLine("(E)lfo");
                        Console.WriteLine();
                        Console.WriteLine("(S)air");
                        personagem = Console.ReadLine().ToUpper();
    
                        Console.WriteLine();
                        
                        if (nome_do_usuario == null)
                        {                                            
                            Console.WriteLine("Como é o seu nome?");
                            nome_do_usuario = Console.ReadLine();
                        }
    
    	                Console.Clear();
    
                        switch (personagem)
                        {
                            case "M":
                                Console.WriteLine(nome_do_usuario + " está jogando com Mágico");
                                Console.WriteLine("                                   ATAQUE: " + ataquemagico);
                                Console.WriteLine("                                   LEVEL: "  + level_personagem);
                                Console.WriteLine("                                   XP: "     + xpmagico);
                                Console.WriteLine("                                   GOLD:   " + goldmagico);
                                Console.WriteLine();
    
                                Console.WriteLine("O que você deseja fazer? Digite a letra da ação:");
                                Console.WriteLine("(U)par");
                                Console.WriteLine("(S)hop");
                                Console.WriteLine();
                                Console.WriteLine("(V)oltar");
                                letra_da_acao = Console.ReadLine().ToUpper();
    
                                switch (letra_da_acao)
    	                        {
                                    case "U":
                                        Console.Clear();
                                        Console.WriteLine("Em que mundo você deseja lutar? Escreva somente a letra...");
                                        Console.WriteLine();
                                        Console.WriteLine("Mundo dos (O)rcs");
                                        Console.WriteLine("Mundo das (M)úmias");
                                        Console.WriteLine("Mundo das (B)ruxas");
                                        mundo_escolhido = Console.ReadLine().ToUpper();
    
                                        switch (mundo_escolhido)
                                        {
                                            case "O":
                                                Console.Clear();
                                                Console.WriteLine("Bem vindo ao Mundo dos Orcs!");
    
                                                do //while (resposta_do_duelo != "N");
                                                {
                                                    total_de_duelos++;
    
                                                    System.Threading.Thread.Sleep(1000);
                                                    Console.WriteLine("Foi encontrado um Orc!");
                                                    Console.WriteLine();
    
                                                    Console.WriteLine("Aguarde! O duelo está acontecendo...");
                                                    System.Threading.Thread.Sleep(5000);
                                                    Random RD = new Random();
                                                    int resultado = RD.Next(0, 100);
    
                                                    if (resultado <= 50)
                                                    {
                                                        Console.WriteLine("-----> Orc te derrotou!");
                                                        xpmagico = xpmagico + 15;
                                                        goldmagico = goldmagico + 10;
                                                    }
                                                    else if (resultado > 50)
                                                    {
                                                        Console.WriteLine("-----> Você derrotou o Orc!");
                                                        xpmagico = xpmagico + 30;
                                                        goldmagico = goldmagico + 35;
                                                    }
    
                                                    if (total_de_duelos < 2)
                                                    {
                                                        Console.WriteLine("Seu personagem está cansado!");
    													Console.WriteLine("Pressione qualquer tecla para voltar ao menu principal...");
    													Console.ReadKey();
                                                        resposta_do_duelo = "N";
                                                    }
                                                    else
                                                    {
    		                                            Console.WriteLine();
                                                        Console.WriteLine("Duelar novamente?");
                                                        Console.WriteLine("(S)im");
                                                        Console.WriteLine("(N)ão");
                                                        resposta_do_duelo = Console.ReadLine().ToUpper();
                                                    }
                                                } while (resposta_do_duelo != "N");
                                                break; //case "O":
    
                                            case "M":
                                                Console.Clear();
                                                Console.WriteLine("Bem vindo ao Mundo das Múmias!");
                                                break; //case "M":
    
                                            case "B":
                                                Console.Clear();
                                                Console.WriteLine("Bem vindo ao Mundo das Bruxas!");
                                                break; //case "B":
    											
    										default:
    											break;
                                        } //switch (mundo_escolhido)
                                        break; //case "U"
    
                                    case "S":
                                        Console.Clear();
                                        Console.WriteLine("Você tem $" + goldmagico + " para gastar!");
    
                                        Console.WriteLine("Você deseja voltar? Digite 's' para sim, e 'n' para não");
                                        resposta_shop = Console.ReadLine();
    
                                        if (resposta_shop == "s" || resposta_shop == "S")
                                        {
                                            Console.WriteLine("Resposta_Shop: SIM");
                                        }
                                        else if (resposta_shop == "n" || resposta_shop == "N")
                                        {
                                            Console.WriteLine("Resposta_Shop: Não");
                                        }
    
                                        break; //case "S"
    
                                    default:
                                        break;
    	                        }
                                break;
    
                            case "L":
                                Console.WriteLine(nome_do_usuario + " está jogando com Lutador");
                                break;
    
                            case "E":
                                Console.WriteLine(nome_do_usuario + " está jogando com Elfo");
                                break;
    
                            case "S":
                                Console.WriteLine(nome_do_usuario + " saiu do jogo.");
                                break;
                            default:
                                break;
                        } //switch (personagem)                   
                    } while (personagem != "S"); // (S)air
            
                    Console.WriteLine("Pressione qualquer tecla para sair...");
                    Console.ReadKey();
                }
            }
        }
    }
    

    • Sugerido como Resposta Viniciusalopes sábado, 7 de dezembro de 2013 03:17
    • Marcado como Resposta claudiocesarjr sábado, 7 de dezembro de 2013 17:41
    sábado, 7 de dezembro de 2013 02:52

Todas as Respostas

  • é com while e menu de opções!!!


    Fulvio Cezar Canducci Dias

    sexta-feira, 6 de dezembro de 2013 18:47
  • Boa Tarde Claudio,

    Segue o Exemplo que fiz aqui rapidinho pra você, vê se é isso que você precisa:

            public static void Main(string[] args)
            {
                menu();
            }
    
            private static void menu()
            {
                Console.Clear();
                Console.WriteLine("1 - Função 1");
                Console.WriteLine("2 - Função 2");
                Console.WriteLine("3 - Função 3");
    
                string teste = Console.ReadLine();
    
                if (teste == "1")
                    funcao1();
                else if (teste == "2")
                    funcao2();
                else if (teste == "3")
                    funcao3();
            }
    
            private static void verificaVoltar()
            {
                Console.Clear();
                Console.WriteLine("Digite 'Menu' para Voltar");
    
                string teste = Console.ReadLine();
    
                if (teste == "Menu")
                    menu();
            }
    
            private static void funcao1()
            {
                Console.WriteLine("Função 1");
                verificaVoltar();
            }
    
            private static void funcao2()
            {
                Console.WriteLine("Função 2");
                verificaVoltar();
            }
    
            private static void funcao3()
            {
                Console.WriteLine("Função 2");
                verificaVoltar();
            }

    Att,

    Guilherme H.

    sexta-feira, 6 de dezembro de 2013 18:49
  • Funcionou, mas ao mesmo tempo não! O programa é o seguinte;

    O usuário escolhe 3 personagens. Após isso, acontece um Console.Clear(); e então ele é levado para uma parte, onde mostra características do seu personagem, e duas opções: 'Shop' e 'Duelar'.

    Quando ele entra em duelar acontece algumas ações... Após isso, ele deve voltar à parte em que mostra as características do personagem e as duas opções!

    Fiz do jeito em que seu código está, mas ele volta para a parte em que escolhemos o personagem... Com isso, o dinheiro, e a experiência que ele ganhou no combate, é perdida!

    E agora?

    sexta-feira, 6 de dezembro de 2013 19:21
  • Funcionou, mas ao mesmo tempo não! O programa é o seguinte;

    O usuário escolhe 3 personagens. Após isso, acontece um Console.Clear(); e então ele é levado para uma parte, onde mostra características do seu personagem, e duas opções: 'Shop' e 'Duelar'.

    Quando ele entra em duelar acontece algumas ações... Após isso, ele deve voltar à parte em que mostra as características do personagem e as duas opções!

    Fiz do jeito em que seu código está, mas ele volta para a parte em que escolhemos o personagem... Com isso, o dinheiro, e a experiência que ele ganhou no combate, é perdida!

    E agora?

    Amigo isso é erro de lógica!!! não é erro  do código passado apesar do que foi passado um exemplo !!!

    Se tem que ter uma lógica para que seu programa volte aos estágios anteriores!!!


    Fulvio Cezar Canducci Dias

    sexta-feira, 6 de dezembro de 2013 20:46
  • pelo o que eu percebi, ele foi criando o private static void! o meu não... o meu eu coloquei todo o código dentro de um só, que no caso é o main...
    sexta-feira, 6 de dezembro de 2013 21:00
  • pelo o que eu percebi, ele foi criando o private static void! o meu não... o meu eu coloquei todo o código dentro de um só, que no caso é o main...

    Poste seu código!!! 

    O código que foi passado está bem organizado ...! 


    Fulvio Cezar Canducci Dias

    sexta-feira, 6 de dezembro de 2013 21:12
  • Vou passar, mas antes já vou logo avisando: sou iniciante na programação, percebi que usei muuitos códigos de condicionamento if, tenho certeza que existe uma maneira mais fácil de organizar isso! Peço a sua compreensão, e que me dê as dicas que preciso! 

    Perceba no código, a parte em que ele deve ir (menu) é a parte "if (Str == "M" || Str == "m") ...........

            static void Main(string[] args)
            {
                string nome_do_usuario;
                string letra_da_acao;
                string mundo_escolhido;
                string resposta_shop;
                string resposta_do_duelo;
                string level_personagem = "0";
                string voltarparaomenu;
    
                //MAGIAS
                double varinhanegra = Convert.ToDouble("50");
                double abracadabra = Convert.ToDouble("38");
    
                //MÁGICO
                string ataquemagico = "30";
                double goldmagico = Convert.ToDouble("0");
                string xpmagico = "0";
    
                //TELA INICIAL
    
                Console.WriteLine("Bem vindo!");
                Console.WriteLine("Digite a letra correspondente ao personagem que deseja jogar:");
                Console.WriteLine();
                Console.WriteLine("(M)ágico");
                Console.WriteLine("(L)utador");
                Console.WriteLine("(E)lfo");
                var Str = Console.ReadLine();
    
                Console.WriteLine();
                Console.WriteLine("Como é o seu nome?");
                nome_do_usuario = Console.ReadLine();
    
                Console.Clear();
    
                if (Str == "M" || Str == "m")
                {
                    Console.WriteLine(nome_do_usuario + " está jogando com Mágico");
                    Console.WriteLine("                                   ATAQUE: " + ataquemagico);
                    Console.WriteLine("                                   LEVEL: " + level_personagem);
                    Console.WriteLine("                                   XP: " + xpmagico);
                    Console.WriteLine("                                   GOLD:   " + goldmagico);
                    Console.WriteLine();
    
                    Console.WriteLine("O que você deseja fazer? Digite a letra da ação:");
                    Console.WriteLine("(U)par");
                    Console.WriteLine("(S)hop");
                    letra_da_acao = Console.ReadLine();
    
                    if (letra_da_acao == "u" || letra_da_acao == "U")
                    {
                        Console.Clear();
                        Console.WriteLine("Em que mundo você deseja lutar? Escreva somente a letra...");
                        Console.WriteLine();
                        Console.WriteLine("Mundo dos (O)rcs");
                        Console.WriteLine("Mundo das (M)úmias");
                        Console.WriteLine("Mundo das (B)ruxas");
                        mundo_escolhido = Console.ReadLine();
    
                        switch (mundo_escolhido)
                        {
                            case "O" : 
                                Console.Clear();
                                Console.WriteLine("Bem vindo ao Mundo dos Orcs!");
                                System.Threading.Thread.Sleep(1000);
                                Console.WriteLine("Foi encontrado um Orc!");
                                Console.WriteLine();
    
                                Console.WriteLine("Aguarde! O duelo está acontecendo...");
                                System.Threading.Thread.Sleep(5000);
                                   Random RD = new Random();    
                                   int resultado = RD.Next(0, 100);
    
                                    if (resultado <= 50)
                                    {
                                        Console.WriteLine("-----> Orc te derrotou!");
                                        xpmagico = xpmagico + 15;
                                        goldmagico = goldmagico + 10;
                                    }
                                    else if (resultado > 50)
                                    {
                                        Console.WriteLine("-----> Você derrotou o Orc!");
                                        xpmagico = xpmagico + 30;
                                        goldmagico = goldmagico + 35;
                                    }
    
                                    Console.WriteLine();
                                Console.WriteLine("Duelar novamente? Digite 's' para sim, ou 'n' para não...");
                                resposta_do_duelo = Console.ReadLine();
                                if (resposta_do_duelo == "s" || resposta_do_duelo == "S")
                                {
                                    System.Threading.Thread.Sleep(1000);
                                    Console.WriteLine("Foi encontrado um Orc!");
                                    Console.WriteLine();
    
                                    Console.WriteLine("Aguarde! O duelo está acontecendo...");
                                    System.Threading.Thread.Sleep(5000);
                                    Random RD1 = new Random();
                                    int resultado1 = RD.Next(0, 100);
    
                                    if (resultado1 <= 50)
                                    {
                                        Console.WriteLine("-----> Orc te derrotou!");
                                        xpmagico = xpmagico + 15;
                                        goldmagico = goldmagico + 10;
                                    }
                                    else if (resultado1 > 50)
                                    {
                                        Console.WriteLine("-----> Você derrotou o Orc!");
                                        xpmagico = xpmagico + 30;
                                        goldmagico = goldmagico + 35;
                                    }
                                    Console.WriteLine("Seu personagem está cansado! Volte para o menu principal digitando 'v'");
                                    voltarparaomenu = Console.ReadLine();
    
                                    if (voltarparaomenu == "V" || voltarparaomenu == "v")
                                    {
     
                                    }
    
                                    if (resposta_do_duelo == "n" || resposta_do_duelo == "N")
                                    {
                                        Console.WriteLine("Volte para o menu principal digitando 'v'");
                                        voltarparaomenu = Console.ReadLine();
    
                                        if (voltarparaomenu == "V" || voltarparaomenu == "v")
                                        {
    
                                        }
                                    }
                                }
                                break;
                        
                            case "M" :
                                Console.Clear();
                                Console.WriteLine("Bem vindo ao Mundo das Múmias!");
                                break;
    
                            case "B" :
                                Console.Clear();
                                Console.WriteLine("Bem vindo ao Mundo das Bruxas!");
                                break;
                        }
                    }
    
                    else if (letra_da_acao == "s" || letra_da_acao == "S")
                    {
                        Console.Clear();
                        Console.WriteLine("Você tem $" + goldmagico + " para gastar!");
    
                        Console.WriteLine("Você deseja voltar? Digite 's' para sim, e 'n' para não");
                        resposta_shop = Console.ReadLine();
    
                        if (resposta_shop == "s" || resposta_shop == "S")
                        {
     
                        }
                        else if (resposta_shop == "n" || resposta_shop == "N")
                        {
     
                        }
    
                    }
                }
                else if (Str == "L" || Str == "l")
                {
                    Console.WriteLine(nome_do_usuario + " está jogando com Lutador");
                }
                else if (Str == "E" || Str == "e")
                {
                    Console.WriteLine(nome_do_usuario + " está jogando com Elfo");
                }
                Console.ReadKey();
            }
        }
    }

    sexta-feira, 6 de dezembro de 2013 21:21
  • pelo o que eu percebi, ele foi criando o private static void! o meu não... o meu eu coloquei todo o código dentro de um só, que no caso é o main...

    Poste seu código!!! 

    O código que foi passado está bem organizado ...! 


    Fulvio Cezar Canducci Dias

    Já coloquei o código!!
    sexta-feira, 6 de dezembro de 2013 22:12
  • Opa!

    Estou reestruturando seu código... to tentando entender o mecanismo do jogo, mas acredito que a solução seja fazer laço dentro de laço, com flags para o jogador sair/voltar quando quiser...

    Além disso, você deve declarar as variáveis estaticamente no NameSpace, mas fora do método Main()

    Já já devo ter sua solução!

    Abçs!


    sábado, 7 de dezembro de 2013 00:49
  • Opa!

    Veja se é isso que você quer, parente... Ctrl+C ... Ctrl+V

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Jogo
    {
        class Program
        {
            static string personagem;
            static string nome_do_usuario;
            static string letra_da_acao;
            static string mundo_escolhido;
            static string resposta_shop;
            static string resposta_do_duelo;
            static string level_personagem = "0";
            static string voltarparaomenu;
    
            //MAGIAS
            static double varinhanegra = Convert.ToDouble("50");
            static double abracadabra = Convert.ToDouble("38");
    
            //MÁGICO
            static string ataquemagico = "30";
            static double goldmagico = Convert.ToDouble("0");
            static string xpmagico = "0";
    
            //DUELO
            static int total_de_duelos;
    
            static void Main(string[] args)
            {
                {
                    do //while (personagem != "S");
                    {
                        //TELA INICIAL
                        Console.WriteLine("Bem vindo!");
                        Console.WriteLine("Digite a letra correspondente ao personagem que deseja jogar:");
                        Console.WriteLine();
                        Console.WriteLine("(M)ágico");
                        Console.WriteLine("(L)utador");
                        Console.WriteLine("(E)lfo");
                        Console.WriteLine();
                        Console.WriteLine("(S)air");
                        personagem = Console.ReadLine().ToUpper();
    
                        Console.WriteLine();
                        
                        if (nome_do_usuario == null)
                        {                                            
                            Console.WriteLine("Como é o seu nome?");
                            nome_do_usuario = Console.ReadLine();
                        }
    
    	                Console.Clear();
    
                        switch (personagem)
                        {
                            case "M":
                                Console.WriteLine(nome_do_usuario + " está jogando com Mágico");
                                Console.WriteLine("                                   ATAQUE: " + ataquemagico);
                                Console.WriteLine("                                   LEVEL: "  + level_personagem);
                                Console.WriteLine("                                   XP: "     + xpmagico);
                                Console.WriteLine("                                   GOLD:   " + goldmagico);
                                Console.WriteLine();
    
                                Console.WriteLine("O que você deseja fazer? Digite a letra da ação:");
                                Console.WriteLine("(U)par");
                                Console.WriteLine("(S)hop");
                                Console.WriteLine();
                                Console.WriteLine("(V)oltar");
                                letra_da_acao = Console.ReadLine().ToUpper();
    
                                switch (letra_da_acao)
    	                        {
                                    case "U":
                                        Console.Clear();
                                        Console.WriteLine("Em que mundo você deseja lutar? Escreva somente a letra...");
                                        Console.WriteLine();
                                        Console.WriteLine("Mundo dos (O)rcs");
                                        Console.WriteLine("Mundo das (M)úmias");
                                        Console.WriteLine("Mundo das (B)ruxas");
                                        mundo_escolhido = Console.ReadLine().ToUpper();
    
                                        switch (mundo_escolhido)
                                        {
                                            case "O":
                                                Console.Clear();
                                                Console.WriteLine("Bem vindo ao Mundo dos Orcs!");
    
                                                do //while (resposta_do_duelo != "N");
                                                {
                                                    total_de_duelos++;
    
                                                    System.Threading.Thread.Sleep(1000);
                                                    Console.WriteLine("Foi encontrado um Orc!");
                                                    Console.WriteLine();
    
                                                    Console.WriteLine("Aguarde! O duelo está acontecendo...");
                                                    System.Threading.Thread.Sleep(5000);
                                                    Random RD = new Random();
                                                    int resultado = RD.Next(0, 100);
    
                                                    if (resultado <= 50)
                                                    {
                                                        Console.WriteLine("-----> Orc te derrotou!");
                                                        xpmagico = xpmagico + 15;
                                                        goldmagico = goldmagico + 10;
                                                    }
                                                    else if (resultado > 50)
                                                    {
                                                        Console.WriteLine("-----> Você derrotou o Orc!");
                                                        xpmagico = xpmagico + 30;
                                                        goldmagico = goldmagico + 35;
                                                    }
    
                                                    if (total_de_duelos < 2)
                                                    {
                                                        Console.WriteLine("Seu personagem está cansado!");
    													Console.WriteLine("Pressione qualquer tecla para voltar ao menu principal...");
    													Console.ReadKey();
                                                        resposta_do_duelo = "N";
                                                    }
                                                    else
                                                    {
    		                                            Console.WriteLine();
                                                        Console.WriteLine("Duelar novamente?");
                                                        Console.WriteLine("(S)im");
                                                        Console.WriteLine("(N)ão");
                                                        resposta_do_duelo = Console.ReadLine().ToUpper();
                                                    }
                                                } while (resposta_do_duelo != "N");
                                                break; //case "O":
    
                                            case "M":
                                                Console.Clear();
                                                Console.WriteLine("Bem vindo ao Mundo das Múmias!");
                                                break; //case "M":
    
                                            case "B":
                                                Console.Clear();
                                                Console.WriteLine("Bem vindo ao Mundo das Bruxas!");
                                                break; //case "B":
    											
    										default:
    											break;
                                        } //switch (mundo_escolhido)
                                        break; //case "U"
    
                                    case "S":
                                        Console.Clear();
                                        Console.WriteLine("Você tem $" + goldmagico + " para gastar!");
    
                                        Console.WriteLine("Você deseja voltar? Digite 's' para sim, e 'n' para não");
                                        resposta_shop = Console.ReadLine();
    
                                        if (resposta_shop == "s" || resposta_shop == "S")
                                        {
                                            Console.WriteLine("Resposta_Shop: SIM");
                                        }
                                        else if (resposta_shop == "n" || resposta_shop == "N")
                                        {
                                            Console.WriteLine("Resposta_Shop: Não");
                                        }
    
                                        break; //case "S"
    
                                    default:
                                        break;
    	                        }
                                break;
    
                            case "L":
                                Console.WriteLine(nome_do_usuario + " está jogando com Lutador");
                                break;
    
                            case "E":
                                Console.WriteLine(nome_do_usuario + " está jogando com Elfo");
                                break;
    
                            case "S":
                                Console.WriteLine(nome_do_usuario + " saiu do jogo.");
                                break;
                            default:
                                break;
                        } //switch (personagem)                   
                    } while (personagem != "S"); // (S)air
            
                    Console.WriteLine("Pressione qualquer tecla para sair...");
                    Console.ReadKey();
                }
            }
        }
    }
    

    • Sugerido como Resposta Viniciusalopes sábado, 7 de dezembro de 2013 03:17
    • Marcado como Resposta claudiocesarjr sábado, 7 de dezembro de 2013 17:41
    sábado, 7 de dezembro de 2013 02:52
  • Opa!

    Cláudio Cesar, essa técnica de programação que você está utilizando chama-se:

     - POG (Programação Orientada a Gambiarra)!

    Do jeito que está, não tem muito como reduzir esse código... o correto seria modular o programa, implementar outras camadas como classes, interface, criar métodos, instanciar uma classe do jogador para ler os atributos dele sempre que precisar, etc... mas enfim: procurei preservar ao máximo o seu código para você não perder o raciocínio, mas entenda que essa não é a melhor forma de se fazer!

    Boa Sorte!

    Resumindo a estrutura do código, fica assim:

    using System;	
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Jogo
    {
        class Program
        {
            // Variáveis estáticas
    		static string personagem; //(...)
    
            static void Main(string[] args)
            {
                {
                    do //while (personagem != "S");
                    {
                        switch (personagem)
                        {
                            case "M":
     
    							switch (letra_da_acao)
    	                        {
                                    case "U":
    
                                        switch (mundo_escolhido)
                                        {
                                            case "O":
    											Console.WriteLine("Bem vindo ao Mundo dos Orcs!");
                                                
    											do //while (resposta_do_duelo != "N");
                                                {
                                                    // Duelo... FIGHT!
    												total_de_duelos++;
    
                                                    if (total_de_duelos < 2)
                                                    {
    													//FLAG para sair do duela
                                                        resposta_do_duelo = "N";
                                                    }
                                                    else
                                                    {
    		                                            // Pergunta para duelar novamente
                                                        Console.WriteLine("Duelar novamente?");
                                                    }
                                                } while (resposta_do_duelo != "N");
                                                break; //case "O":
    
                                        } //switch (mundo_escolhido)
                                        break; //case "U"
    
                                    case "S":
    									//Pergunta do GoldMagico
                                        break; //case "S"
    
                                    default:
                                        break; // Case "M"
    	                        }
                                break;
    
                            case "L":
                                Console.WriteLine(nome_do_usuario + " está jogando com Lutador");
                                break;
    
                            case "E":
                                Console.WriteLine(nome_do_usuario + " está jogando com Elfo");
                                break;
    
                            case "S":
                                Console.WriteLine(nome_do_usuario + " saiu do jogo.");
                                break;
                            default:
                                break;
                        } //switch (personagem)                   
                    } while (personagem != "S"); // (S)air
            
                    Console.WriteLine("Pressione qualquer tecla para sair...");
                    Console.ReadKey();
                }
            }
        }
    }


    sábado, 7 de dezembro de 2013 03:12
  • Opa! Obrigado pela ajuda Vinicius...

    Vou testar daqui a pouco os códigos, e já venho dar uma conclusão.

    Mas mesmo assim, muito obrigado por ter se disponibilizado a editar praticamente todo o código!

    Você me recomenda algum blog/fórum/livro/assunto para eu ler e saber mais ?

    Até mais amigo ;) 

    sábado, 7 de dezembro de 2013 10:29
  • Testei, e realmente ficou melhor... Mas o "problema" ainda continua, porque quando ele vai voltar ao menu principal, ele volta láááááá na parte em que escolhe o personagem... Sendo que na verdade, ele deve voltar a parte em que ele escolhe se quer ir "upar" ou "shop", porque aí as informações de xp, level, gold, ficarão acessíveis ao jogador! Como faço amigo?
    sábado, 7 de dezembro de 2013 11:50
  • Testei, e realmente ficou melhor... Mas o "problema" ainda continua, porque quando ele vai voltar ao menu principal, ele volta láááááá na parte em que escolhe o personagem... Sendo que na verdade, ele deve voltar a parte em que ele escolhe se quer ir "upar" ou "shop", porque aí as informações de xp, level, gold, ficarão acessíveis ao jogador! Como faço amigo?

    O problema no caso é lógica ... tudo bem que o código não ta bem estrutrado, mas, o que ta pegando é a lógica!

    Amigo um Debug resolve, tem que aprender debugar código!!! é primordial e qualquer programador de qualquer nivel faz isso...


    Fulvio Cezar Canducci Dias

    sábado, 7 de dezembro de 2013 12:49
  • Cara, tudo está funcionando corretamente.. Nenhum erro foi encontrado não.

    O único problema é que ele volta para o lugar errado

    sábado, 7 de dezembro de 2013 13:18
  • Cara, tudo está funcionando corretamente.. Nenhum erro foi encontrado não.

    O único problema é que ele volta para o lugar errado

    Então tem erro de lógica ???

    Fulvio Cezar Canducci Dias

    sábado, 7 de dezembro de 2013 13:20
  • Sim!! Eu acho que seja também... Mas as vezes ele não intendeu que eu tinha dito que ao voltar, deveria ir a parte que mostrava o xp, gold, e level... Talvez seja isso...
    sábado, 7 de dezembro de 2013 13:37
  • Não estou conseguindo intender, o que ele fez/usou para quando efetuar o retorno, ir diretamente para a primeira parte do programa... Alguém pode me ajudar?
    sábado, 7 de dezembro de 2013 14:13
  • AAH, consegui!!! 
    sábado, 7 de dezembro de 2013 14:33
  • Não se esqueça de marcar a resposta @claudiocesarjr.

    Até mais.

    sábado, 7 de dezembro de 2013 15:22
  • Sim!! Eu acho que seja também... Mas as vezes ele não intendeu que eu tinha dito que ao voltar, deveria ir a parte que mostrava o xp, gold, e level... Talvez seja isso...

    Exatamente! pensei que era para voltar tudo. Mas já fiz as seguintes alterações no código:

    1- Criei um novo loop, utilizando como flag a variável 'letra_da_acao'. Dentro desse loop, vai apenas o switch (personagem);

    2- Movi a 'impressão' do menu na tela, de dentro da opção "M" para dentro de um IF, antes do switch (letra_da_acao), para que ele seja exibido somente se escolher um personagem (M)(L)ou(E);

    --

    Veja-lá se é isso que vc queria:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace jogo
    {
        class Program
        {
            static string personagem;
            static string nome_do_usuario;
            static string letra_da_acao;
            static string mundo_escolhido;
            static string resposta_shop;
            static string resposta_do_duelo;
            static string level_personagem = "0";
            static string voltarparaomenu;
    
            //MAGIAS
            static double varinhanegra = Convert.ToDouble("50");
            static double abracadabra = Convert.ToDouble("38");
    
            //MÁGICO
            static string ataquemagico = "30";
            static double goldmagico = Convert.ToDouble("0");
            static string xpmagico = "0";
    
            //DUELO
            static int total_de_duelos;
    
            static void Main(string[] args)
            {
                do //while (personagem != "S");
                {
                    //TELA INICIAL
                    Console.WriteLine("Bem vindo!");
                    Console.WriteLine("Digite a letra correspondente ao personagem que deseja jogar:");
                    Console.WriteLine();
                    Console.WriteLine("(M)ágico");
                    Console.WriteLine("(L)utador");
                    Console.WriteLine("(E)lfo");
                    Console.WriteLine();
                    Console.WriteLine("(S)air");
                    personagem = Console.ReadLine().ToUpper();
    
                    Console.WriteLine();
    
                    if (nome_do_usuario == null)
                    {
                        Console.WriteLine("Como é o seu nome?");
                        nome_do_usuario = Console.ReadLine();
                    }
    
                    Console.Clear();
    
                    do //while (letra_da_acao != "V");
                    {
                        if (personagem != "S")
                        {
                            Console.WriteLine(nome_do_usuario + " está jogando com Mágico");
                            Console.WriteLine("                                   ATAQUE: " + ataquemagico);
                            Console.WriteLine("                                   LEVEL: " + level_personagem);
                            Console.WriteLine("                                   XP: " + xpmagico);
                            Console.WriteLine("                                   GOLD:   " + goldmagico);
                            Console.WriteLine();
    
                            Console.WriteLine("O que você deseja fazer? Digite a letra da ação:");
                            Console.WriteLine("(U)par");
                            Console.WriteLine("(S)hop");
                            Console.WriteLine();
                            Console.WriteLine("(V)oltar");
                            letra_da_acao = Console.ReadLine().ToUpper();
                        }
    
                        switch (personagem)
                        {
                            case "M":
    
                                switch (letra_da_acao)
                                {
                                    case "U":
                                        Console.Clear();
                                        Console.WriteLine("Em que mundo você deseja lutar? Escreva somente a letra...");
                                        Console.WriteLine();
                                        Console.WriteLine("Mundo dos (O)rcs");
                                        Console.WriteLine("Mundo das (M)úmias");
                                        Console.WriteLine("Mundo das (B)ruxas");
                                        mundo_escolhido = Console.ReadLine().ToUpper();
    
                                        switch (mundo_escolhido)
                                        {
                                            case "O":
                                                Console.Clear();
                                                Console.WriteLine("Bem vindo ao Mundo dos Orcs!");
    
                                                do //while (resposta_do_duelo != "N");
                                                {
                                                    total_de_duelos++;
    
                                                    System.Threading.Thread.Sleep(1000);
                                                    Console.WriteLine("Foi encontrado um Orc!");
                                                    Console.WriteLine();
    
                                                    Console.WriteLine("Aguarde! O duelo está acontecendo...");
                                                    System.Threading.Thread.Sleep(5000);
                                                    Random RD = new Random();
                                                    int resultado = RD.Next(0, 100);
    
                                                    if (resultado <= 50)
                                                    {
                                                        Console.WriteLine("-----> Orc te derrotou!");
                                                        xpmagico = xpmagico + 15;
                                                        goldmagico = goldmagico + 10;
                                                    }
                                                    else if (resultado > 50)
                                                    {
                                                        Console.WriteLine("-----> Você derrotou o Orc!");
                                                        xpmagico = xpmagico + 30;
                                                        goldmagico = goldmagico + 35;
                                                    }
    
                                                    if (total_de_duelos < 2)
                                                    {
                                                        Console.WriteLine("Seu personagem está cansado!");
                                                        Console.WriteLine("Pressione qualquer tecla para voltar ao menu principal...");
                                                        Console.ReadKey();
                                                        resposta_do_duelo = "N";
                                                    }
                                                    else
                                                    {
                                                        Console.WriteLine();
                                                        Console.WriteLine("Duelar novamente?");
                                                        Console.WriteLine("(S)im");
                                                        Console.WriteLine("(N)ão");
                                                        resposta_do_duelo = Console.ReadLine().ToUpper();
                                                    }
                                                } while (resposta_do_duelo != "N");
                                                break; //case "O":
    
                                            case "M":
                                                Console.Clear();
                                                Console.WriteLine("Bem vindo ao Mundo das Múmias!");
                                                break; //case "M":
    
                                            case "B":
                                                Console.Clear();
                                                Console.WriteLine("Bem vindo ao Mundo das Bruxas!");
                                                break; //case "B":
    
                                            default:
                                                break;
                                        } //switch (mundo_escolhido)
                                        break; //case "U"
    
                                    case "S":
                                        Console.Clear();
                                        Console.WriteLine("Você tem $" + goldmagico + " para gastar!");
    
                                        Console.WriteLine("Você deseja voltar? Digite 's' para sim, e 'n' para não");
                                        resposta_shop = Console.ReadLine();
    
                                        if (resposta_shop == "s" || resposta_shop == "S")
                                        {
                                            Console.WriteLine("Resposta_Shop: SIM");
                                        }
                                        else if (resposta_shop == "n" || resposta_shop == "N")
                                        {
                                            Console.WriteLine("Resposta_Shop: Não");
                                        }
    
                                        break; //case "S"
    
                                    default:
                                        break;
                                }
                                break;
    
                            case "L":
                                Console.WriteLine(nome_do_usuario + " está jogando com Lutador");
                                break;
    
                            case "E":
                                Console.WriteLine(nome_do_usuario + " está jogando com Elfo");
                                break;
    
                            case "S":
                                Console.WriteLine(nome_do_usuario + " saiu do jogo.");
                                break;
                            default:
                                break;
                        } //switch (personagem)
    
                    } while (letra_da_acao != "V");
    
                } while (personagem != "S"); // (S)air
    
                Console.WriteLine("Pressione qualquer tecla para sair...");
                Console.ReadKey();
            }
        }
    }
    

    • Sugerido como Resposta Viniciusalopes terça-feira, 10 de dezembro de 2013 01:42
    terça-feira, 10 de dezembro de 2013 01:14
  • Não estou conseguindo intender, o que ele fez/usou para quando efetuar o retorno, ir diretamente para a primeira parte do programa... Alguém pode me ajudar?

    O Fulvio tem razão quando diz que o problema é lógica: Você idealizou o jogo... eu reescrevi pelo que eu entendi, mas não fui eu quem criou a lógica... foi você!

    Com certeza era um erro de lógica, mas um erro MEU, ao interpretar a SUA lógica. 

    Nesse caso, recomendo que você faça um teste de mesa, debugando o programa para observar o comportamento... 

    Retirei a maior parte do código, para ver se o programa ficou de acordo com a sua lógica. Analise, Debugue, e se não entender, pode perguntar, estamos aqui para isso!

    SÓ NÃO SE ESQUEÇA de marcar a(s) resposta(s) se elas forem o que você estava procurando!

    A estrutura LÓGICA desse último código ficou assim:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace jogo
    {
        class Program
        {
            // VARIAVEIS
    
            static void Main(string[] args)
            {
                do //while (personagem != "S");
                {
                    // Exibe TELA INICIAL
                    // LÊ personagem
    
                    if (nome_do_usuario == null)
                    {
                        //LÊ nome_do_usuario
                    }
    
                    do //while (letra_da_acao != "V");
                    {
                        if (personagem != "S")
                        {
                            // Escreve ATAQUE / LEVEL / XP / GOLD
                            // Exibe Menu letra_da_acao (U)par / (S)hop  / (V)oltar
                            // LÊ letra_da_acao
                        }
    
                        switch (personagem)
                        {
                            case "M":
                                // Jogando com o Mágico
                                switch (letra_da_acao)
                                {
                                    case "U":
                                        // Opção (U)par 
    
                                        // Exibe Menu mundo_escolhido
                                        // LÊ mundo_escolhido
    
                                        switch (mundo_escolhido)
                                        {
                                            case "O":
    
                                                // Mundo dos Orcs
                                
                                                do //while (resposta_do_duelo != "N");
                                                {
                                                    // FIGHT!!!!!!!
    
                                                    if (total_de_duelos < 2)
                                                    {
                                                        // resposta_do_duelo = "N"; para sair do Duelo
                                                    }
                                                    else
                                                    {
                                                        // Exibe pergunta DUELAR NOVAMENTE
                                                        // LÊ resposta_do_duelo
                                                    }
                                                } while (resposta_do_duelo != "N");
                                                break;
    
                                            case "M":
                                                // Mundo das Múmias!
                                                break;
    
                                            case "B":
                                                // Mundo das Bruxas!");
                                                break; 
    
                                            default:
                                                break;
                                        } //switch (mundo_escolhido)
                                        break; //case "U"
    
                                    case "S":
                                        // Opção (S)hop
    
                                        // Escreve goldmagico
                                        // Exibe Menu resposta_shop
                                        // LÊ resposta_shop == "n" || resposta_shop == "N")
                                        break; //case "S"
    
                                    default:
                                        break;
                                }
                                break;
    
                            case "L":
                                // Jogando com o Lutador
                                break;
    
                            case "E":
                                // Jogando com o Elfo
                                break;
    
                            case "S":
                                // nome_do_usuario + " saiu do jogo."
                                break;
                            default:
                                break;
                        } //switch (personagem)
    
                    } while (letra_da_acao != "V");
    
                } while (personagem != "S"); // (S)air
    
                Console.WriteLine("Pressione qualquer tecla para sair...");
                Console.ReadKey();
            }
        }
    }
    

    Abçs!

    terça-feira, 10 de dezembro de 2013 01:41