NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Matrix

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Eldest
Tvůrce
Avatar
Odpovídá na Kit
Eldest:27.10.2012 14:04

Ok

 
Odpovědět
27.10.2012 14:04
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Eldest
matesax:27.10.2012 14:14

Pravda - out se na toto nehodí:

using System;

namespace Matrix
{
    class Program
    {
        private static Random random = new Random();
        private static bool time = false;
        private static int width, height;
        private static int[] a, b;

        static void Main(string[] args)
        {
            Console.Title = "Matrix";
            Console.CursorVisible = false;
            Console.ForegroundColor = ConsoleColor.DarkGreen;
            Console.WindowLeft = Console.WindowTop = 0;
            Console.WindowHeight = Console.BufferHeight = Console.LargestWindowHeight;
            Console.WindowWidth = Console.BufferWidth = Console.LargestWindowWidth;

            Initialize();

            while (true)
            {
                MatrixSteep(width, height, a, b);

                System.Threading.Thread.Sleep(10);

                if (Console.KeyAvailable && Console.ReadKey().Key == ConsoleKey.F5)
                    Initialize();
            }
        }

        private static void Initialize()
        {
            int height1, height2;

            height = Console.WindowHeight;

            height1 = height / 2;

            height2 = height1 / 2;

            width = Console.WindowWidth - 1;

            a = new int[width];

            b = new int[width];

            Console.Clear();

            for (int x = 0; x < width; x++)
            {
                a[x] = random.Next(height);

                b[x] = random.Next(height2 * (x % 11 != 10 ? 2 : 1), height1 * (x % 11 != 10 ? 2 : 1));
            }
        }

        private static void MatrixSteep(int width, int height, int[] a, int[] b)
        {
            time = !time;

            for (int x = 0; x < width; x++)
            {
                if (x % 11 == 10)
                {
                    if (!time)
                        continue;

                    Console.ForegroundColor = ConsoleColor.White;
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.DarkGreen;

                    Console.SetCursorPosition(x, InBoxY(a[x] - 2 - (b[x] / 40 * 2), height));

                    Console.Write(RandomChar());

                    Console.ForegroundColor = ConsoleColor.Green;
                }

                Console.SetCursorPosition(x, a[x]);

                Console.Write(RandomChar());

                a[x] = InBoxY(a[x] + 1, height);

                Console.SetCursorPosition(x, InBoxY(a[x] - b[x], height));

                Console.Write(' ');
            }
        }

        private static int InBoxY(int n, int height)
        {
            n = n % height;

            return n < 0 ? n + height : n;
        }

        private static char RandomChar()
        {
            switch (random.Next(5))
            {

                case 0:

                    return (char)('0' + random.Next(10));

                case 2:

                    return (char)('a' + random.Next(27));

                case 4:

                    return (char)('A' + random.Next(27));

                default:

                    int i = random.Next(32, 255);

                    if (i == 183)
                        i = 200;

                    return (char)i;
            }

        }
    }
}
 
Odpovědět
27.10.2012 14:14
Avatar
Eldest
Tvůrce
Avatar
Eldest:27.10.2012 14:18

Máte pravdu :) S vámi profesionálama se dá těžko rovnat :D

 
Odpovědět
27.10.2012 14:18
Avatar
Fugiczek
Tvůrce
Avatar
Fugiczek:27.10.2012 14:33

Moc se mi to líbí, je to pěkně zpracovaný. Ale když zmenším velikost okna aby to nebylo tak velký tak se to celý rozbije :-D obraz si lítá jak chce a je to nekoukatelný.

 
Odpovědět
27.10.2012 14:33
Avatar
Eldest
Tvůrce
Avatar
Odpovídá na Fugiczek
Eldest:27.10.2012 14:41

No, asi je to proto, že je tam nastavené, aby to okno bylo, co největší a ten program s tím prostě počítá a podle toho se řídí. Šlo by to každopádně přenastavit.

 
Odpovědět
27.10.2012 14:41
Avatar
Fugiczek
Tvůrce
Avatar
Odpovídá na Eldest
Fugiczek:27.10.2012 14:45

Bylo by dobré tu velikost okna fixnout aby s ní nešlo pohybovat, nebo při každé změně rozměru přepočítávat to co je důležité na to zobrazení. Myslím že fixnout velikost je jednoduší. Ale toto jsou maličkosti. Máš to pěkný ;-)

 
Odpovědět
27.10.2012 14:45
Avatar
Eldest
Tvůrce
Avatar
Eldest:27.10.2012 14:51

Ok, pokusím se to opravit + i to co psali kolegové. :)

 
Odpovědět
27.10.2012 14:51
Avatar
Eldest
Tvůrce
Avatar
Odpovídá na Fugiczek
Eldest:27.10.2012 15:03

Problém je v tom, že u console nevím jak se nastavuje, aby nešlo hýbat s velikostí okna.

 
Odpovědět
27.10.2012 15:03
Avatar
Maxfx
Tvůrce
Avatar
Maxfx:27.10.2012 15:23

to znam z netu

Odpovědět
27.10.2012 15:23
Být ovládán znamená být sledován, pod dohledem, špehován, veden, uzákoněn, reglementován, ohrazen, indoktrinován, pře...
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Eldest
David Hartinger:27.10.2012 19:27

No je vidět, že Matrix tu evidentně uspěl :) Mezerami jsem myslel jak to funguje, že se ti tam taky hezky tvoří ta prázdná místa, nebo to dělá samo? Nepopsal bys tu ten algoritmus slovy? Abych to nemusel vyčítat ze zdrojáku? Možná by to bylo super i napsat do toho článku, asi nejsem jediný, koho zajímá, jak ten rain funguje.

Odpovědět
27.10.2012 19:27
New kid back on the block with a R.I.P
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 26.