تنفيذ مصفوفة السقوط

تنفيذ مصفوفة السقوط

منذ فجر الكمبيوتر، أظهرت هوليوود بشكل كبير أن الهاكر أو المبرمج هو شخص يجلس على جهاز كمبيوتر ويكتب مفاتيح عشوائية على جهاز الكمبيوتر والتي يتم تجميعها في النهاية إلى مصفوفة متساقطة مثل المحاكاة. سنحاول هنا تنفيذ محاكاة مصفوفة هابطة مماثلة على وحدة التحكم باستخدام لغة C++.

مصفوفة السقوط في سطر الأوامر باستخدام C++

الفكرة هنا هي طباعة أحرف عشوائية على عرض محدد حيث قد يكون أو لا يحتوي الحرفان المتتاليان على قدر معين من الفجوة المحددة بشكل عشوائي. يجب تنفيذ قدر معين من التأخير بين طباعة الأسطر المتعاقبة من أجل الحصول على "تأثير هبوطي".

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

يؤدي هذا إلى طباعة محاكاة Falling-Matrix المذهلة على وحدة التحكم. ملحوظة :

  • لن يتم تشغيل هذا البرنامج باستخدام زر التشغيل على IDE لأن النظام معطل.
  • إذا حصلت على خطأ مترجم أثناء ترجمة هذا البرنامج. قم بتجميعها باستخدام الأمر أدناه في دول مجلس التعاون الخليجي.
     $ g++ -std=c++11 abc.cpp -o falling.o   
    $ falling.o