好莱坞黑客式下降矩阵的C++实现

自从计算机诞生以来,好莱坞就已经将黑客或程序员展示得淋漓尽致,他们坐在电脑上,在电脑上输入随机键,最终编译成一个下降的矩阵式模拟。在这里,我们将尝试使用C++实现控制台上类似的降矩阵仿真。

这里的想法是在定义的宽度上打印随机字符,其中两个连续的字符可能会或可能不会具有一定数量的随机定义的间隙。为了产生“下降效果”,必须在连续打印的行之间实施一定的延迟。

// 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; 
} 

这会在控制台上打印出惊人的Falling-Matrix模拟。

如果在编译该程序时出现编译器错误。在GCC上使用以下命令对其进行编译。

$ g++ -std=c++11 abc.cpp -o falling.o
$ falling.o 

六一编程网

发表评论

Next Post

Python使用Google Static Maps API获取指定位置的google地图图像

周六 5月 16 , 2020
利用Google Static Maps API,可以在网页上嵌入Google Maps图片,而无需 […]