Implementacija padajoče matrice

Implementacija padajoče matrice

Od zore računalnikov je Hollywood močno prikazoval hekerja ali programerja kot nekoga, ki sedi za računalnikom in tipka naključne ključe na računalniku, ki se na koncu prevede v simulacijo, podobno padajoči matriki. Tukaj bomo poskušali implementirati podobno simulacijo padajoče matrike na konzoli z uporabo C++.

Padajoča matrica v ukazni vrstici z uporabo C++

Ideja tukaj je natisniti naključne znake v določeni širini, kjer imata dva zaporedna znaka lahko določeno količino vrzeli, določeno naključno, ali pa tudi ne. Med tiskanjem zaporednih vrstic je treba uporabiti določeno količino zakasnitve, da se doseže "učinek padanja".

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  ();   

To natisne neverjetno simulacijo Falling-Matrix na konzoli. Opomba:

  • Ta program se ne bi zagnal z gumbom Run on IDE, ker je sistem onemogočen.
  • Če se med prevajanjem tega programa pojavi napaka prevajalnika. Prevedite ga s spodnjim ukazom na GCC.
     $ g++ -std=c++11 abc.cpp -o falling.o   
    $ falling.o