none
Imitar lo que hace este The Thing (La Cosa) RRS feed

  • Pregunta

  • Hola:

    Quiero hacer los dibujos exactamente lo mismo como en este ordenador ochentero de esta película exactamente indicado en el minuto 6:56 de este vídeo.

    Lo que he hecho hasta ahora son solo textos, en el cual no se el motivo, no me sale el rellenado de la parte derecha de la pantalla con el │ ASCII 179.

    ¿Alguna idea de como hacerlo?

    Por lo que parece, a pesar de que es del 1982, hoy en día exige mucho tiempo y complicado.

    Saludos.


    http://electronica-pic.blogspot.com


    • Editado Metaconta sábado, 4 de mayo de 2019 14:35
    sábado, 4 de mayo de 2019 14:31

Respuestas

  • Hola intenta con esto

     static void Main(string[] args)
            {
                DrawMarco(1, 1, 20, 10);
                Console.ReadKey();
            }
    
            private static void DrawMarco(int v1, int v2, int v3, int v4)
            {
                Console.BackgroundColor = ConsoleColor.Black;
                Console.ForegroundColor = ConsoleColor.Blue;
                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, "│");
                }
                Console.CursorVisible = true;
            }
            private static void gotoXY(int v1, int v2, string cadena)
            {
                Console.SetCursorPosition(v1, v2);
                Console.WriteLine(cadena);
                Thread.Sleep(50);
    
            }

    • Marcado como respuesta Metaconta domingo, 5 de mayo de 2019 7:13
    sábado, 4 de mayo de 2019 14:56

Todas las respuestas

  • hola

    >>Por lo que parece, a pesar de que es del 1982, hoy en día exige mucho tiempo y complicado.

    creo que alli te equivocas, no es un tema de tiempo o que tan complicado, sino que quieres forzar un lenguaje para lo cual no esta pensado volver en tiempo, c# y .net mira de cara al futuro y evoluciona, se itegra con desarrollo mobile(Xamarin o WPF), con servicio en la nube (Azure), etc

    Si quieres forzar algo a ir hacia atras estas llendo contra la corriente

    Si quieres algo anticuado usa algo anticuado, programa en C++ o Clipper

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    sábado, 4 de mayo de 2019 14:55
  • Hola intenta con esto

     static void Main(string[] args)
            {
                DrawMarco(1, 1, 20, 10);
                Console.ReadKey();
            }
    
            private static void DrawMarco(int v1, int v2, int v3, int v4)
            {
                Console.BackgroundColor = ConsoleColor.Black;
                Console.ForegroundColor = ConsoleColor.Blue;
                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, "│");
                }
                Console.CursorVisible = true;
            }
            private static void gotoXY(int v1, int v2, string cadena)
            {
                Console.SetCursorPosition(v1, v2);
                Console.WriteLine(cadena);
                Thread.Sleep(50);
    
            }

    • Marcado como respuesta Metaconta domingo, 5 de mayo de 2019 7:13
    sábado, 4 de mayo de 2019 14:56
  • hola

    >>Por lo que parece, a pesar de que es del 1982, hoy en día exige mucho tiempo y complicado.

    creo que alli te equivocas, no es un tema de tiempo o que tan complicado, sino que quieres forzar un lenguaje para lo cual no esta pensado volver en tiempo, c# y .net mira de cara al futuro y evoluciona, se itegra con desarrollo mobile(Xamarin o WPF), con servicio en la nube (Azure), etc

    Si quieres forzar algo a ir hacia atras estas llendo contra la corriente

    Si quieres algo anticuado usa algo anticuado, programa en C++ o Clipper

    saludos


    Leandro Tuttini

    Hola:

    Antes que nada gracias por el código y la información.

    Este código parace lo de resolver los cuadros.

     static void Main(string[] args)
            {
                DrawMarco(1, 1, 20, 10);
                Console.ReadKey();
            }
    
            private static void DrawMarco(int v1, int v2, int v3, int v4)
            {
                Console.BackgroundColor = ConsoleColor.Black;
                Console.ForegroundColor = ConsoleColor.Blue;
                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, "│");
                }
                Console.CursorVisible = true;
            }
            private static void gotoXY(int v1, int v2, string cadena)
            {
                Console.SetCursorPosition(v1, v2);
                Console.WriteLine(cadena);
                Thread.Sleep(50);
    
            }

    C# en modo consola mientra exista se puede hacer todo antiguo, al menos su aspecto, solo eso, la apariencia, es la ventaja que tiene las tecnologías de ahora. Podría usar también C++, ahora estoy con C#, también lo hace.

    Sigo con ello.


    http://electronica-pic.blogspot.com

    sábado, 4 de mayo de 2019 17:21
  • Buenas:

    El código completo hasta ahora es este gracias al compañero.

    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 - C#";
                Console.WindowWidth = 38;   // X ancho.
                Console.WindowHeight = 15;  // Y altura.
    
                int tiempo = 1;
    
                // 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);
    
                Console.ReadKey();
            }
    
            public static void Escribir(string Cadena, int tiempo)
            {
                foreach (char letra in Cadena)
                {
                    Console.Write(letra);
                    Thread.Sleep(tiempo);
                }
            }
    
            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, "│");
                }
                //Console.CursorVisible = true;
            }
    
            private static void gotoXY(int v1, int v2, string cadena)
            {
                Console.SetCursorPosition(v1, v2);
                Console.WriteLine(cadena);
                Thread.Sleep(1);
            }
        }
    }
    

    Saludos.


    http://electronica-pic.blogspot.com

    sábado, 4 de mayo de 2019 19:53
  • Hola

    Si te sirvió a respuesta marcarla como resuelta

    domingo, 5 de mayo de 2019 3:09
  • Me sirvió, gracias. ;)

    Respuesta marcada.


    http://electronica-pic.blogspot.com

    domingo, 5 de mayo de 2019 7:13