Skip to main content

HOW TO APPLY FALLING TEXT EFFECT IN A CONSOLE PROGRAM WITH THREADING IN C#

"A thread is defined as the execution part of a program. Each thread defines a unique flow of control. If your application involves complicated and time consuming operations then it is often helpful to set different execution paths or threads, with each thread performing a particular job.", says the smart guys behind Tutorials Point.Well, our program is not going to be complicated and we are not going to be performing any time consuming task, we are rather going be creating a camouflage application that gives us the effect similar to what you get when you ping a site or an IP address with the "-t" option in cmd or the effect you see in movies like Blacklist, 24, Person Of Interest and the likes.Now let's stop the ranting and get started.We are going be building this application upon our existing code, one we started in the previous article "How to grammatically Change the background and foreground color of a console Application".Now open up the code in Visual Studio and add a class named ThreadMantis to the project then modify the class to look like the following. class ThreadMantis    {         private int sleep;        private double index;         public ThreadMantis(int sleep, double index)        {            this.sleep = sleep;            this.index = index;        }         public void TheEffect()        {            try            {                 Console.WriteLine("Tricks starts");                for (int counter = 0; counter <= index; counter++)                {                    Random rand = new Random();                    int a=rand.Next(0,2);                    int b=rand.Next(0,2);                    int c = rand.Next(0, 2);                    int d = rand.Next(0, 2);                    int e=rand.Next(0,2);                    int f=rand.Next(0,2);                    int g = rand.Next(0, 2);                    int h = rand.Next(0, 2);                    int i = rand.Next(0, 2);                    int j = rand.Next(0, 2);                    int k = rand.Next(0, 2);                    int l = rand.Next(0, 2);                    int m = rand.Next(0, 2);                    int n = rand.Next(0, 2);                    int o = rand.Next(0, 2);                    int p = rand.Next(0, 2);                    int q = rand.Next(0, 2);                    int r = rand.Next(0, 2);                    int s = rand.Next(0, 2);                    int t = rand.Next(0, 2);                    int u = rand.Next(0, 2);                    int v = rand.Next(0, 2);                    int w = rand.Next(0, 2);                    int x = rand.Next(0, 2);                    int y=rand.Next(0,2);                    int z = rand.Next(0, 2);                     Thread.Sleep(sleep);                    Console.WriteLine(a.ToString()+b.ToString()+c.ToString()+d.ToString()+e.ToString()+f.ToString()+g.ToString()+                        i.ToString()+j.ToString()+l.ToString()+m.ToString()+n.ToString()+o.ToString()+p.ToString()+q.ToString()+r.ToString()                        +s.ToString()+t.ToString()+u.ToString()+v.ToString()+w.ToString()+x.ToString()+y.ToString()+z.ToString()+                         i.ToString()+j.ToString()+l.ToString()+m.ToString()+n.ToString()+o.ToString()+p.ToString()+q.ToString()+r.ToString()                        +s.ToString()+t.ToString()+u.ToString()+v.ToString()+w.ToString()+x.ToString()+y.ToString()+z.ToString()+                        i.ToString()+j.ToString()+l.ToString()+m.ToString()+n.ToString()+o.ToString()+p.ToString()+q.ToString()+r.ToString()                        +s.ToString()+t.ToString()+u.ToString()+v.ToString()+w.ToString()+x.ToString()+y.ToString()+z.ToString()+                         i.ToString()+j.ToString()+l.ToString()+m.ToString()+n.ToString()+o.ToString()+p.ToString()+q.ToString()+r.ToString()                        +s.ToString()+t.ToString()+u.ToString()+v.ToString()+w.ToString()+x.ToString()+y.ToString()+z.ToString());                 }            }            catch (ThreadAbortException e)            {                Console.WriteLine("Aborted");            }            finally            {                Console.WriteLine("Couldn't catch the thread exception");            }        }    }Such as amateur code.Now that the ThreadMantis class is created, let's now use it in our program. Go to Program class and modify the existing code to look like the code below:    class Program    {        public static int sleep;        public static double index;         public static ThreadMantis thMantis;        static void Main(string[] args)        {            Console.WriteLine("Enter the speed\n>>");             sleep = Convert.ToInt32(Console.ReadLine());            Console.WriteLine("Enter the the number of times you want this to be executed\n>>");            index = Convert.ToInt32(Console.ReadLine());                thMantis= new ThreadMantis(sleep, index);             Console.WindowWidth = 50;            Console.WindowHeight = 50;            Console.ForegroundColor = ConsoleColor.DarkBlue;            Console.BackgroundColor = ConsoleColor.Black;             ThreadStart ts = new ThreadStart(thMantis.TheEffect);            Console.WriteLine("In Main: Create the child thread");            Thread t = new Thread(ts);            t.Start();            Console.WriteLine("I am green");            Console.ReadKey();                    }    }Now that's it, you can run the program now and see how it works. I am not going to explain the code because it seems simple, if there is any part of it you don't understand, please feel free to ask me in the comment section.I added some functionality that allows the user of our program to specify how fast or slow the effect should run and how many times the effect should be executed.In the screenshots below, I entered 10 as the speed and 1000,000 as the number of time the effect should repeat.And hitting the enter key just changes the color and starts running our effect.isn't that impressive?Thanks for following up in this walk-through, to get the whole idea of what just happened here, you might want to read more about Multi-Threading in C#.The program can be stopped by pressing Ctrl+C. You can add more functionality such as allowing the user of our program to change the background and foreground color of the program by entering the color they want (Use the switch case statement to achieve this.).Thank you once again for following up.

Comments

Popular posts from this blog

HOW TO WRITE, COMPILE AND RUN C++ CODE ON LINUX KALI

Developing a C++ Program on Kali Linux Without Installing Additional Software This article is for hackers who want to develop a C++ program on Kali Linux without installing any additional software. Some might say you need to install a separate compiler or extra tools to write and run a simple C++ program on Kali Linux. However, I’ll show you how to do it right out of the box. Pre-installed C++ Compiler in Kali Linux Kali Linux comes with a pre-installed C++ compiler called g++ . We will use this to write and compile a basic "Hello, World!" program. Step 1: Check if g++ is Installed Open your terminal and run the following command: g++ -v If the compiler is installed, you should see version details. If not, you will get an error message. Step 2: Create a C++ File In your terminal, type: nano MyCpp.cpp This will create a C++ file and open it in the Nano editor. Step 3: Write the C++ Code Once Nano opens, enter the following C++ code: #include <...

HOW TO INSTALL BLOGENGINE.NET WITH VISUAL STUDIO.

Yes there are lots of article on the internet that already describes how to do this, but that wont stop me from sharing my own idea on how I got mine rocking with visual studio 2012. Now here is the story, I woke up one morning and discovered I was departing from being a beginner programmer to a programmer who is at least worthy to be called a programmer. So I felt I needed to share my programming experience and the only known way I could do that, was to start blogging, hmmm... Just like you, I didn't like blogger, I needed  to be my own boss. So, I started my own blog project, but wait....  Why was I doing that when there are open source blog projects being developed and maintained by developers who are more "programmatically" experienced than I?. BlogEngine was the one I chose and the installation was a breeze. All I did was go to the site, downloaded the first zip file which is tagged "web", extracted it to my visual studio project directory, opened vi...

LOAN MANAGEMENT SYSTEM (My Project Idea)

There are many companies that specializes on giving loan to people; they make their profits by collecting interest on any money they lend out, and before a loan can be given to any customer, the customer must provide a collateral and some details such as:  contact details and a reference/guarantor. When the loan is finally given to the customer, they charge interest based on the the amount given to the customer for a given period of time which could be daily, weekly, monthly or yearly.  For example, a company could be collecting interest based on a particular amount for a given period of time like: $200,000 loan would have an interest tag of $2,000  per month until the money is returned, and $100,000 would have an interest of $1,000 per month until the money is returned.  In  addition, the customers need to know when the time for them to pay their interest comes e.g.  at the end of the month or the timing model with which the calculation is being made. Usua...