コード例 #1
0
ファイル: Program.cs プロジェクト: Zaoldyek/ChainCommandState
        static void Main(string[] args)
        {
            ReceiverGranada   receiverGranada   = new ReceiverGranada();
            ConseguirGranadas conseguirGranadas = new ConseguirGranadas(receiverGranada, 0);
            ReceiverPlasma    receiverPlasma    = new ReceiverPlasma();
            ConseguirPlasma   conseguirPlasma   = new ConseguirPlasma(receiverPlasma, 0);
            Personaje         entPersonaje      = new Personaje();

            Console.WriteLine("Escoge tu personaje : \n 1°) Guerrero Clase Baja \n 2°) Guerrero Clase Media \n 3°) Guerrero Clase Alta");
            entPersonaje.iTipo = Convert.ToInt32(Console.ReadLine());
            switch (entPersonaje.iTipo)
            {
            case 1:
                entPersonaje.iPotencia = 10;
                break;

            case 2:
                entPersonaje.iPotencia = 20;
                break;

            case 3:
                entPersonaje.iPotencia = 30;
                break;
            }


            Console.WriteLine("Introduce el nombre de tu personaje");
            entPersonaje.cNombre = Console.ReadLine();
            Console.WriteLine();

            while (true)
            {
                Console.WriteLine("Escoge tu acción : \n 1°) Caminar \n 2°) Saltar \n 3°) Golpear \n 4°) Disparar \n 5°) " + (conseguirGranadas.iStatus == 0? "Conseguir lanza granada": "Usar lanza granada") + " \n 6°) " + (conseguirPlasma.iStatus == 0 ? "Conseguir rifle plasma" : "Usar rifle plasma"));
                entPersonaje.cAccion = Console.ReadLine();

                Invoker invocador = new Invoker();

                Command comando;
                switch (entPersonaje.cAccion)
                {
                case "1":
                    entPersonaje.cAccion = "Camina";
                    comando = new Caminar();
                    invocador.setComando(comando, entPersonaje);
                    invocador.ExcecuteCommand();
                    break;

                case "2":
                    entPersonaje.cAccion = "Salta";
                    comando = new Saltar();
                    invocador.setComando(comando, entPersonaje);
                    invocador.ExcecuteCommand();
                    break;

                case "3":
                    entPersonaje.cAccion = "Golpea";
                    comando = new Golpear();
                    invocador.setComando(comando, entPersonaje);
                    invocador.ExcecuteCommand();
                    break;

                case "4":
                    entPersonaje.cAccion = "Dispara";
                    comando = new Disparar();
                    invocador.setComando(comando, entPersonaje);
                    invocador.ExcecuteCommand();
                    break;

                case "5":
                    entPersonaje.cAccion = "Dispara Lanza Granadas";
                    comando = conseguirGranadas;
                    invocador.setComando(comando, entPersonaje);
                    invocador.ExcecuteCommand();
                    conseguirGranadas.iStatus = 1;
                    break;

                case "6":
                    entPersonaje.cAccion = "Dispara Rifle de Plasma";
                    comando = conseguirPlasma;
                    invocador.setComando(comando, entPersonaje);
                    invocador.ExcecuteCommand();
                    conseguirPlasma.iStatus = 1;
                    break;

                default:
                    Console.WriteLine("No es una opcion válida");
                    break;
                }
                Console.WriteLine();
            }
        }
コード例 #2
0
 public ConseguirGranadas(ReceiverGranada _receiver, int _iStatus)
 {
     receiver = _receiver;
     iStatus  = _iStatus;
 }