none
Mientra crea textos, al pulsar enter aparece todo a la vez RRS feed

  • Pregunta

  • Hola:

    Quiero hacer un programa, igualque este código de abajo pero al pulsar enter, se muestre todo el mensaje de golpe.

    Dice una persona mayor ya con 67 años de edad, que la gente de ahora no saben trabajar ni entienden como se programaba hace años, sobre todo en modo consola, pero hay zonas que le están dando por trabajar en modo  retro. ;)

    Mi idea es poner un string grande, dice que hay que usar diccionario o array de ese string que no se como hacer, cuando ejecutes la aplicación empieza a aparecer textos en pantalla. En el método de abajo, el programa no acaba hasta llegar todo el texto, es decir, que se queda como esclavo.

    using System;
    using System.Threading;
    
    namespace The_Thing_La_Cosa_Consola_01_cs
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.Title = "The Thing - La Cosa - Consola C#";
                Console.WindowWidth = 38;   // X ancho.
                Console.WindowHeight = 15;  // Y altura.
    
                // Cursor invisible.
                Console.CursorVisible = false;
    
                // Dibujar cuadro.
                DrawMarco(1, 1, 35, 14);
    
                // Escribir textos.
                Console.SetCursorPosition(2, 4);
                Escribir("PROJECTION:\n", 25);
                Console.SetCursorPosition(2, 5);
                Escribir("IF INTRUDER ORGANISM REACHES\n", 25);
                Console.SetCursorPosition(2, 6);
                Escribir("CIVILIZED AREAS . . .\n", 25);
                Thread.Sleep(100);
                Console.SetCursorPosition(2, 10);
                Escribir("ENTIRE WORLD POPULATION INFECTED\n", 25);
                Console.SetCursorPosition(2, 11);
                Escribir("27,000 HOURS FROM FIRST CONTACT.\n", 25);
    
                // En español.
                Thread.Sleep(2000);
    
                // Limpiar pantalla.
                Console.Clear();
    
                // Dibujar cuadro.
                DrawMarco(1, 1, 35, 14);
    
                // Escribir textos.
                Console.SetCursorPosition(2, 3);
                Escribir("PROYECCIÓN:\n", 25);
                Console.SetCursorPosition(2, 4);
                Escribir("SI ORGANISMO INTRUSO ALCANZA\n", 25);
                Console.SetCursorPosition(2, 5);
                Escribir("ZONAS CIVILIZADAS . . .\n", 25);
                Thread.Sleep(100);
                Console.SetCursorPosition(2, 9);
                Escribir("TODA LA POBLACIÓN MUNDIAL INFECTÓ\n", 25);
                Console.SetCursorPosition(2, 10);
                Escribir("27,000 HORAS DESDE EL PRIMER\n", 25);
                Console.SetCursorPosition(2, 11);
                Escribir("CONTACTO.\n", 25);
    
                Console.ReadKey();
            }
    
            public static void Escribir(string Cadena, int tiempo)
            {
                foreach (char letra in Cadena)
                {
                    Console.Write(letra);
                    Console.Beep(600, 25); // Console.Beep(frecuencia, duracion);
                }
            }
    
            private static void DrawMarco(int v1, int v2, int v3, int v4)
            {
                Console.ForegroundColor = ConsoleColor.Cyan; // Texto azul claro.
                Console.BackgroundColor = ConsoleColor.DarkBlue; // Fondo azul oscuro.
                Console.Clear(); // Para poner fondo azul oscuro en la pantalla completa.
    
                Console.CursorVisible = false;
                gotoXY(v1, v2, "┌");
    
                for (int i = v1 + 1; i < v3; i++)
                {
                    gotoXY(i, v2, "─");
                }
                gotoXY(v3, v2, "┐");
                for (int i = v2 + 1; i < v4; i++)
                {
                    gotoXY(v3, i, "│");
                }
                gotoXY(v3, v4, "┘");
                for (int i = v3 - 1; i > v1; i--)
                {
                    gotoXY(i, v4, "─");
                }
                gotoXY(v1, v4, "└");
                for (int i = v4 - 1; i > v2; i--)
                {
                    gotoXY(v1, i, "│");
                }
            }
    
            private static void gotoXY(int v1, int v2, string cadena)
            {
                Console.SetCursorPosition(v1, v2);
                Console.WriteLine(cadena);
                Thread.Sleep(1);
            }
        }
    }

    El código de arriba se hace estring por string y en mi caso tiene que ser en el mismo, eso si, dentro deun diccionario o array.

    ¿Cómo se hace?

    Saludos.


    http://electronica-pic.blogspot.com

    martes, 7 de mayo de 2019 5:00

Respuestas

  • Hola intenta con esto

    no requiere array o diccionario

    class Program
        {
            static void Main(string[] args)
            {
                Thread thread = new Thread(new ThreadStart( stars));
                thread.Start();
                ConsoleKeyInfo key;
                do
                {
                    key= Console.ReadKey();
    
                } while (key.Key != ConsoleKey.Enter);
                listo = true;
                Console.ReadKey();
            }
    
            static bool listo = false;
    
            private static void stars()
            { 
                Console.Title = "The Thing - La Cosa - Consola C#";
                Console.WindowWidth = 38;   // X ancho.
                Console.WindowHeight = 15;  // Y altura.
    
                // Cursor invisible.
                Console.CursorVisible = false;
    
                // Dibujar cuadro.
                DrawMarco(1, 1, 35, 14);
    
                // Escribir textos.
                Console.SetCursorPosition(2, 4);
                Escribir("PROJECTION:\n", 25);
                Console.SetCursorPosition(2, 5);
                Escribir("IF INTRUDER ORGANISM REACHES\n", 25);
                Console.SetCursorPosition(2, 6);
                Escribir("CIVILIZED AREAS . . .\n", 25);
                if(!listo)
                Thread.Sleep(100);
                Console.SetCursorPosition(2, 10);
                Escribir("ENTIRE WORLD POPULATION INFECTED\n", 25);
                Console.SetCursorPosition(2, 11);
                Escribir("27,000 HOURS FROM FIRST CONTACT.\n", 25);
    
                // En español.
                if (!listo)
                    Thread.Sleep(2000);
    
                // Limpiar pantalla.
                Console.Clear();
    
                // Dibujar cuadro.
                DrawMarco(1, 1, 35, 14);
    
                // Escribir textos.
                Console.SetCursorPosition(2, 3);
                Escribir("PROYECCIÓN:\n", 25);
                Console.SetCursorPosition(2, 4);
                Escribir("SI ORGANISMO INTRUSO ALCANZA\n", 25);
                Console.SetCursorPosition(2, 5);
                Escribir("ZONAS CIVILIZADAS . . .\n", 25);
                if (!listo)
                    Thread.Sleep(100);
                Console.SetCursorPosition(2, 9);
                Escribir("TODA LA POBLACIÓN MUNDIAL INFECTÓ\n", 25);
                Console.SetCursorPosition(2, 10);
                Escribir("27,000 HORAS DESDE EL PRIMER\n", 25);
                Console.SetCursorPosition(2, 11);
                Escribir("CONTACTO.\n", 25);
    
                Console.ReadKey();
            }
    
            public static void Escribir(string Cadena, int tiempo)
            {
                foreach (char letra in Cadena)
                {
                    Console.Write(letra);
                    if (!listo)
                        Console.Beep(600, 25); // Console.Beep(frecuencia, duracion);
                }
            }
    
            private static void DrawMarco(int v1, int v2, int v3, int v4)
            {
                Console.ForegroundColor = ConsoleColor.Cyan; // Texto azul claro.
                Console.BackgroundColor = ConsoleColor.DarkBlue; // Fondo azul oscuro.
                Console.Clear(); // Para poner fondo azul oscuro en la pantalla completa.
    
                Console.CursorVisible = false;
                gotoXY(v1, v2, "┌");
    
                for (int i = v1 + 1; i < v3; i++)
                {
                    gotoXY(i, v2, "─");
                }
                gotoXY(v3, v2, "┐");
                for (int i = v2 + 1; i < v4; i++)
                {
                    gotoXY(v3, i, "│");
                }
                gotoXY(v3, v4, "┘");
                for (int i = v3 - 1; i > v1; i--)
                {
                    gotoXY(i, v4, "─");
                }
                gotoXY(v1, v4, "└");
                for (int i = v4 - 1; i > v2; i--)
                {
                    gotoXY(v1, i, "│");
                }
            }
    
            private static void gotoXY(int v1, int v2, string cadena)
            {
                Console.SetCursorPosition(v1, v2);
                Console.WriteLine(cadena);
                if (!listo)
                    Thread.Sleep(1);
            }
        }

    martes, 7 de mayo de 2019 5:27
  • Hola:

    Perdón, me olvidé una cosa. El string tiene que ser sacado en una sola tanga.

            string texto = @"
    PROJECTION:
    IF INTRUDER ORGANISM REACHES
    CIVILIZED AREAS . . .
    
    
    ENTIRE WORLD POPULATION INFECTED
    27,000 HOURS FROM FIRST CONTACT.
    ";

    El código de ejemplo que puse tiene string parte en parte y aquí hay que sacarlo de una pasada.

    Saludos.


    http://electronica-pic.blogspot.com

    martes, 7 de mayo de 2019 20:45

Todas las respuestas

  • Hola intenta con esto

    no requiere array o diccionario

    class Program
        {
            static void Main(string[] args)
            {
                Thread thread = new Thread(new ThreadStart( stars));
                thread.Start();
                ConsoleKeyInfo key;
                do
                {
                    key= Console.ReadKey();
    
                } while (key.Key != ConsoleKey.Enter);
                listo = true;
                Console.ReadKey();
            }
    
            static bool listo = false;
    
            private static void stars()
            { 
                Console.Title = "The Thing - La Cosa - Consola C#";
                Console.WindowWidth = 38;   // X ancho.
                Console.WindowHeight = 15;  // Y altura.
    
                // Cursor invisible.
                Console.CursorVisible = false;
    
                // Dibujar cuadro.
                DrawMarco(1, 1, 35, 14);
    
                // Escribir textos.
                Console.SetCursorPosition(2, 4);
                Escribir("PROJECTION:\n", 25);
                Console.SetCursorPosition(2, 5);
                Escribir("IF INTRUDER ORGANISM REACHES\n", 25);
                Console.SetCursorPosition(2, 6);
                Escribir("CIVILIZED AREAS . . .\n", 25);
                if(!listo)
                Thread.Sleep(100);
                Console.SetCursorPosition(2, 10);
                Escribir("ENTIRE WORLD POPULATION INFECTED\n", 25);
                Console.SetCursorPosition(2, 11);
                Escribir("27,000 HOURS FROM FIRST CONTACT.\n", 25);
    
                // En español.
                if (!listo)
                    Thread.Sleep(2000);
    
                // Limpiar pantalla.
                Console.Clear();
    
                // Dibujar cuadro.
                DrawMarco(1, 1, 35, 14);
    
                // Escribir textos.
                Console.SetCursorPosition(2, 3);
                Escribir("PROYECCIÓN:\n", 25);
                Console.SetCursorPosition(2, 4);
                Escribir("SI ORGANISMO INTRUSO ALCANZA\n", 25);
                Console.SetCursorPosition(2, 5);
                Escribir("ZONAS CIVILIZADAS . . .\n", 25);
                if (!listo)
                    Thread.Sleep(100);
                Console.SetCursorPosition(2, 9);
                Escribir("TODA LA POBLACIÓN MUNDIAL INFECTÓ\n", 25);
                Console.SetCursorPosition(2, 10);
                Escribir("27,000 HORAS DESDE EL PRIMER\n", 25);
                Console.SetCursorPosition(2, 11);
                Escribir("CONTACTO.\n", 25);
    
                Console.ReadKey();
            }
    
            public static void Escribir(string Cadena, int tiempo)
            {
                foreach (char letra in Cadena)
                {
                    Console.Write(letra);
                    if (!listo)
                        Console.Beep(600, 25); // Console.Beep(frecuencia, duracion);
                }
            }
    
            private static void DrawMarco(int v1, int v2, int v3, int v4)
            {
                Console.ForegroundColor = ConsoleColor.Cyan; // Texto azul claro.
                Console.BackgroundColor = ConsoleColor.DarkBlue; // Fondo azul oscuro.
                Console.Clear(); // Para poner fondo azul oscuro en la pantalla completa.
    
                Console.CursorVisible = false;
                gotoXY(v1, v2, "┌");
    
                for (int i = v1 + 1; i < v3; i++)
                {
                    gotoXY(i, v2, "─");
                }
                gotoXY(v3, v2, "┐");
                for (int i = v2 + 1; i < v4; i++)
                {
                    gotoXY(v3, i, "│");
                }
                gotoXY(v3, v4, "┘");
                for (int i = v3 - 1; i > v1; i--)
                {
                    gotoXY(i, v4, "─");
                }
                gotoXY(v1, v4, "└");
                for (int i = v4 - 1; i > v2; i--)
                {
                    gotoXY(v1, i, "│");
                }
            }
    
            private static void gotoXY(int v1, int v2, string cadena)
            {
                Console.SetCursorPosition(v1, v2);
                Console.WriteLine(cadena);
                if (!listo)
                    Thread.Sleep(1);
            }
        }

    martes, 7 de mayo de 2019 5:27
  • Hola:

    Perdón, me olvidé una cosa. El string tiene que ser sacado en una sola tanga.

            string texto = @"
    PROJECTION:
    IF INTRUDER ORGANISM REACHES
    CIVILIZED AREAS . . .
    
    
    ENTIRE WORLD POPULATION INFECTED
    27,000 HOURS FROM FIRST CONTACT.
    ";

    El código de ejemplo que puse tiene string parte en parte y aquí hay que sacarlo de una pasada.

    Saludos.


    http://electronica-pic.blogspot.com

    martes, 7 de mayo de 2019 20:45