Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

[C#] Efeito Matrix

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    [C#] Efeito Matrix

    Bom meus queridos como alguns sabem estou caindo de cabeça dentro da linguagem C# e já consigo fazer algumas coisas.
    uma delas é reproduzir o efeito matrix igual ao do filme em um modo console no Msdos.





    Código:
    #define readkey
    
    using System;
    
    namespace m7tr1x
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.Title = "3F31T0 M4TR1X 4RTHUR_P41X40";
                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("Aperte Qualquer tecla para continuar!");
                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;
            }
        }
    }
    ~# Criado pela [IN]Segurança #~

  • Font Size
    #2
    como eu faço para salvar ? e qual programa?

    Comment


    • Font Size
      #3
      Nuss legal *-*

      È legal usando Saída de texto do Windows (TextOut) fica muito louco

      Parabéns!

      Comment


      • Font Size
        #4
        eu queria saber que compilador você usa, pois eu usei o dev c++ e o visual c++ 2008(que nem sei usar direito) e deu erro.

        Comment


        • Font Size
          #5
          Sera que voce me poderia arranjar o codigo com a explicaçao???? espero resposta!!

          Comment


          • Font Size
            #6
            Muito foda,
            Jogue pro Microsoft visual C#
            File/newproject/consoleapplication
            Limpe tudo e depois é só colar.
            Depois e só é só apertar F5

            Comment


            • Font Size
              #7
              será que existe alguma possibilidade de fazer isso em C? :O kk desculpa pela pergunta ainda to aprendendo (no comecinho ainda) e se a pergunta for obvia peguem leve comigo :$

              Comment

              X
              Working...
              X