Efecto Matrix en C#

Este código me pareció interesante de compartir, una modesta recreación del efecto matrix, escrita en C#.


#define readkey

using System;

namespace m7tr1x
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Title = "tH3 M7tr1x 3ff3<t";
            Console.ForegroundColor = ConsoleColor.DarkGreen;
            Console.WindowLeft = Console.WindowTop = 0;
            Console.WindowHeight = Console.BufferHeight = Console.LargestWindowHeight;
            Console.WindowWidth = Console.BufferWidth = Console.LargestWindowWidth;
#if readkey
            Console.WriteLine("H1T 7NY K3Y T0 C0NT1NU3 =/");
            Console.ReadKey();
#endif
            Console.CursorVisible = false;
            int width, height;
            int[] y;
            int[] l;
            Initialize(out width, out height, out y, out l);
            int ms;
            while (true)
            {
                DateTime t1 = DateTime.Now;
                MatrixStep(width, height, y, l);
                ms = 10 - (int)((TimeSpan)(DateTime.Now - t1)).TotalMilliseconds;
                if (ms> 0)
                    System.Threading.Thread.Sleep(ms);
                if (Console.KeyAvailable)
                    if (Console.ReadKey().Key == ConsoleKey.F5)
                        Initialize(out width, out height, out y, out l);
            }
        }

        static bool thistime = false;

        private static void MatrixStep(int width, int height, int[] y, int[] l)
        {
            int x;
            thistime = !thistime;
            for (x = 0; x <width; ++x)
            {
                if (x % 11 == 10)
                {
                    if (!thistime)
                        continue;
                    Console.ForegroundColor = ConsoleColor.White;
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.DarkGreen;
                    Console.SetCursorPosition(x, inBoxY(y[x] - 2 - (l[x] / 40 * 2), height));
                    Console.Write(R);
                    Console.ForegroundColor = ConsoleColor.Green;
                }
                Console.SetCursorPosition(x, y[x]);
                Console.Write(R);
                y[x] = inBoxY(y[x] + 1, height);
                Console.SetCursorPosition(x, inBoxY(y[x] - l[x], height));
                Console.Write(' ');
            }
        }

        private static void Initialize(out int width, out int height, out int[] y, out int[] l)
        {
            int h1;
            int h2 = (h1 = (height = Console.WindowHeight) / 2) / 2;
            width = Console.WindowWidth - 1;
            y = new int[width];
            l = new int[width];
            int x;
            Console.Clear();
            for (x = 0; x <width; ++x)
            {
                y[x] = r.Next(height);
                l[x] = r.Next(h2 * ((x % 11 != 10) ? 2 : 1), h1 * ((x % 11 != 10) ? 2 : 1));
            }
        }

        static Random r = new Random();
        static char R
        {
            get
            {
                int t = r.Next(10);
                if (t <= 2)
                    return (char)('0' + r.Next(10));
                else if (t <= 4)
                    return (char)('a' + r.Next(27));
                else if (t <= 6)
                    return (char)('A' + r.Next(27));
                else
                    return (char)(r.Next(32, 255));
            }
        }

        public static int inBoxY(int n, int height)
        {
            n = n % height;
            if (n <0)
                return n + height;
            else
                return n;
        }
    }
}


Vía: pastebin

13 comentario en este artículoDeje el suyo
  1. Me gustaria poder tener ese codigo en c/c++ para poder compilarlo, ya que no se c#

  2. ¡WOW! ¡Excelente!

  3. muy interesante seria weno k pongas mas aportes

  4. idea mia o tu codigo esta incompleto?? = wen aporte

  5. mira deberiamos hacerlo en c char con los caracteres japoneses eso en verdad si seria muy bueno

  6. esta buenisimo me podrias dar cursos para aprender a programar en c shrp 2008 porfa desde el inicio

  7. Excelente, funciona muy bien.

  8. Hey muy bueno, Por cierto si esta completo y lo mejor de todo es que “Si funciona”, thanks nigga, I Guess you’re good at this, dejo mi correo para comentarios, bye…

  9. hola amigos me gusta mucho esta matrix pero me podriana ayudar amigos quiero cambiarles las letras q se muestran en esta matrix lo siento soy nuevo y me gustaria q me ayudan si un favor gracias amigos

  10. Man te falta las librerias pero probare poniendo las declaraciones thanks…..

  11. nada mas por eso te pondre en favoritos sin saber el contenido

    gracias

    arriba C# =D

  12. Me encanto locoooo!!

  13. Esta de lujooo jaja pero am soy muy nuevo en esto de la programacion en c y bueno lo k hize fue guardar el codigo en un archivo .c y ejecutarlo con gcc en terminal de fedora, y me lanzo errores como estos:

    matrix1.c:2:1: error: nombre de tipo ‘using’ desconocido
    matrix1.c:4:1: error: nombre de tipo ‘namespace’ desconocido
    matrix1.c:5:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    matrix1.c:15:12: error: #if sin expresión

    seria muy feliz si me dicen k hize mal :) muchas gracias :D

Deje su comentario

Por favor, ingrese su nombre

Por favor, ingrese un correo-e válido

Por favor, ingrese su mensaje

luauf.com 2012

WordPress