Реализация падающей матрицы

Опубликовано: 4 Декабря, 2021

С момента зарождения компьютеров Голливуд в значительной степени демонстрировал хакера или программиста как человека, сидящего за компьютером и вводящего случайные ключи на компьютере, которые в конечном итоге компилируются в матрицу падения, подобную моделированию. Здесь мы попытаемся реализовать аналогичное моделирование падающей матрицы на консоли с использованием C ++.

Идея здесь состоит в том, чтобы печатать случайные символы по определенной ширине, где два последовательных символа могут иметь или не иметь определенный промежуток, определенный случайным образом. Должна быть реализована определенная задержка между печатью последовательных строк, чтобы иметь «эффект падения».

Рекомендуется: сначала попробуйте свой подход в {IDE}, прежде чем переходить к решению.

// C++ program for implementation of falling matrix.
#include<iostream>
#include<string>
#include<thread>
#include<cstdlib>
#include<ctime>
#include<chrono>
// Width of the matrix line
const int width = 70;
// Defines the number of flips in Boolean Array 'switches'
const int flipsPerLine =5;
// Delay between two successive line print
const int sleepTime = 100;
using namespace std;
int main()
{
int i=0, x=0;
// srand initialized with time function
// to get distinct rand values at runtime
srand ( time (NULL));
// Used to decide whether to print
// the character in that particular iteration
bool switches[width] = {0};
// Set of characters to print from
const string ch = "1234567890qwertyuiopasdfghjkl"
"zxcvbnm,./';[]!@#$%^&*()-=_+" ;
const int l = ch.size();
// Green font over black console, duh!
system ( "Color 0A" );
// Indefinite Loop
while ( true )
{
// Loop over the width
// Increment by 2 gives better effect
for (i=0;i<width;i+=2)
{
// Print character if switches[i] is 1
// Else print a blank character
if (switches[i])
cout << ch[ rand () % l] << " " ;
else
cout<< " " ;
}
// Flip the defined amount of Boolean values
// after each line
for (i=0; i!=flipsPerLine; ++i)
{
x = rand () % width;
switches[x] = !switches[x];
}
// New Line
cout << endl;
// Using sleep_for function to delay,
// chrono milliseconds function to convert to milliseconds
this_thread::sleep_for(chrono::milliseconds(sleepTime));
}
return 0;
}

Это напечатает удивительную симуляцию падающей матрицы на консоли.

Примечание :

  • Эта программа не будет запускаться с помощью кнопки «Выполнить в среде IDE», поскольку система отключена.
  • Если вы получаете ошибку компилятора при компиляции этой программы. Скомпилируйте его, используя команду ниже в GCC.
    $ g ++ -std = c ++ 11 abc.cpp -o Fall.o
    $ Fall.o

Эта статья предоставлена Raghav Jajodia. Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .