Tuesday, March 29, 2011

C#(Amazing Matrix Effect)

#define readkey
using System;
namespace matrix
{
        Class program
    {
        static void Main(string[] args)
        {
            Console.Title = "The MatriX Eff3T maDe by Asad";
            Console.ForegroundColor = ConsoleColor.DarkGreen;
            Console.WindowLeft = Console.WindowTop = 0;
            Console.WindowHeight = Console.BufferHeight = Console.LargestWindowHeight;
            Console.WindowWidth = Console.BufferWidth = Console.LargestWindowWidth;
#If readkey Then
            Console.WriteLine("THE MATRIX EFFECT MADE BY ASAD ABBAS ");
            Console.ReadKey();
            Console.Clear();
            Console.WriteLine("HIT ANY KEY TO CONTINUE ");
            Console.ReadKey();
#End If
            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] / 55 * 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)('Æ' + r.Next(10));
                    else if(t<=4)
                        return (char)('1' + r.Next(27));
                    else if(t<=6)
                        return (char)('¥' + 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;
            }
            }
}




No comments:

Post a Comment