logo

Implementatie van een vallende matrix

Sinds het ontstaan ​​van computers heeft Hollywood een hacker of een programmeur op grote schaal gedemonstreerd als iemand die op een computer zit en willekeurige toetsen op de computer typt, die uiteindelijk compileert tot een Falling-matrix-achtige simulatie. Hier zullen we proberen een soortgelijke vallende matrixsimulatie op de console te implementeren met behulp van C++.

Een Falling-Matrix op de opdrachtregel met C++' src='//techcodeview.com/img/matrix/07/implementation-of-a-falling-matrix.webp' title=

Het idee hier is om willekeurige tekens af te drukken over een gedefinieerde breedte, waarbij de twee opeenvolgende tekens al dan niet een bepaalde hoeveelheid ruimte willekeurig kunnen hebben. Er moet een zekere vertraging tussen het afdrukken van opeenvolgende regels worden geïmplementeerd om een ​​'vallend effect' te bewerkstelligen.



CPP
// C++ program for implementation of falling matrix. #include   #include #include #include #include #include // 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; } 
Java
import java.util.Random; public class FallingMatrix {  // Width of the matrix line  static final int width = 70;  // Defines the number of flips in Boolean Array 'switches'  static final int flipsPerLine = 5;  // Delay between two successive line prints  static final int sleepTime = 100;  public static void main(String[] args) {  // Used to decide whether to print the character in that particular iteration  boolean[] switches = new boolean[width];  // Set of characters to print from  String ch = '1234567890qwertyuiopasdfghjkl'  + 'zxcvbnm./';[]!@#$%^&*()-=_+';  int l = ch.length();  // Green font over black console  System.out.print('u001B[32m');  // Indefinite Loop  while (true) {  // Loop over the width  // Increment by 2 gives a better effect  for (int i = 0; i < width; i += 2) {  // Print character if switches[i] is true  // Else print a blank character  if (switches[i])  System.out.print(ch.charAt(new Random().nextInt(l)) + ' ');  else  System.out.print(' ');  }  // Flip the defined amount of Boolean values after each line  for (int i = 0; i < flipsPerLine; ++i) {  int x = new Random().nextInt(width);  switches[x] = !switches[x];  }  // New Line  System.out.println();  // Delay  try {  Thread.sleep(sleepTime);  } catch (InterruptedException e) {  e.printStackTrace();  }  }  } } 
Python3
# Python program for implementation of falling matrix. import random import time # Width of the matrix line width = 70 # Defines the number of flips in Boolean Array 'switches' flipsPerLine = 5 # Delay between two successive line print sleepTime = 0.1 # Set of characters to print from ch = '1234567890qwertyuiopasdfghjklzxcvbnm./';[]!@#$%^&*()-=_+' # Used to decide whether to print # the character in that particular iteration switches = [0]*width # Indefinite Loop while True: # Loop over the width # Increment by 2 gives better effect for i in range(0 width 2): # Print character if switches[i] is 1 # Else print a blank character if switches[i]: print(ch[random.randint(0 len(ch)-1)] end=' ') else: print(' ' end=' ') # Flip the defined amount of Boolean values # after each line for _ in range(flipsPerLine): x = random.randint(0 width-1) switches[x] = not switches[x] # New Line print() # Using sleep function to delay time.sleep(sleepTime) 
JavaScript
// Importing required modules const sleep = require('util').promisify(setTimeout); // Width of the matrix line let width = 70; // Defines the number of flips in Boolean Array 'switches' let flipsPerLine = 5; // Delay between two successive line print let sleepTime = 100; // in milliseconds // Set of characters to print from let ch = '1234567890qwertyuiopasdfghjklzxcvbnm./';[]!@#$%^&*()-=_+'; // Used to decide whether to print // the character in that particular iteration let switches = Array(width).fill(0); // Indefinite Loop async function fallingMatrix() {  while (true) {  // Loop over the width  // Increment by 2 gives better effect  for (let i = 0; i < width; i += 2) {  // Print character if switches[i] is 1  // Else print a blank character  process.stdout.write(switches[i] ? ch[Math.floor(Math.random() * ch.length)] + ' ' : ' ');  }  // Flip the defined amount of Boolean values  // after each line  for (let _ = 0; _ < flipsPerLine; _++) {  let x = Math.floor(Math.random() * width);  switches[x] = !switches[x];  }  // New Line  console.log();  // Using sleep function to delay  await sleep(sleepTime);  } } fallingMatrix(); 

Hiermee wordt de verbazingwekkende Falling-Matrix-simulatie op de console afgedrukt. Opmerking :

  • Dit programma kan niet worden uitgevoerd met de knop Uitvoeren op IDE, omdat het systeem is uitgeschakeld.
  • Als u een compilerfout krijgt tijdens het compileren van dit programma. Compileer het met behulp van onderstaande opdracht op GCC.
    $ g++ -std=c++11 abc.cpp -o falling.o  
    $ falling.o