फॉलिंग मैट्रिक्स इफेक्ट
हमने विभिन्न फिल्मों में फॉलिंग मैट्रिक्स दृश्य देखा है। यहां हम देखेंगे कि C++ प्रोग्राम लिखकर ऐसा प्रभाव कैसे बनाया जाए।
आवश्यक चरण
- मैट्रिक्स की चौड़ाई परिभाषित करें
- दो क्रमागत कैरेक्टर्स के बीच समान या अलग गैप हो सकता है
- प्रत्येक लाइन प्रिंट करने के बीच एक निश्चित देरी ताकि गिरने का प्रभाव दिखाई दे
पूर्ण कार्यान्वयन
#include <iostream>
#include <string>
#include <thread>
#include <cstdlib>
#include <ctime>
#include <chrono>
const int wd = 70; // मैट्रिक्स विंडो की चौड़ाई
const int flipsPerLine = 5; // बूलियन ऐरे 'alternate' के लिए पांच फ्लिप्स
const int sleepTime = 50; // दो क्रमागत लाइन्स प्रिंट करने में 50 मिलीसेकंड
using namespace std;
int main() {
int i = 0, x = 0;
srand(time(NULL)); // रनटाइम पर रैंडम वैल्यू के लिए srand इनिशियलाइज़ करें
bool alternate[wd] = {0}; // यह तय करता है कि विशेष इटरेशन में कैरेक्टर प्रिंट करना है या नहीं
// प्रिंट करने के लिए कैरेक्टर्स का सेट
const string ch = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz!@#$%^&*()_+{}|?><`~";
const int l = ch.size();
while (true) {
// प्रत्येक कॉलम के लिए
for (i = 0; i < wd; i += 2) {
if (alternate[i]) // जब alternate ऐरे में 1 हो तो कैरेक्टर प्रिंट करें
cout << ch[rand() % l] << " ";
else
cout << " ";
}
// बूलियन वैल्यूज को फ्लिप करें
for (i = 0; i != flipsPerLine; ++i) {
x = rand() % wd;
alternate[x] = !alternate[x];
}
cout << endl;
this_thread::sleep_for(chrono::milliseconds(sleepTime)); // बेहतर प्रभाव के लिए स्लीप
}
return 0;
}
कोड व्याख्या
alternateऐरे निर्धारित करता है कि कौन से कॉलम में कैरेक्टर दिखाना है- प्रत्येक फ्रेम में
flipsPerLineरैंडम कॉलम्स टॉगल होते हैं sleepTimeएनिमेशन गति को नियंत्रित करता है- कैरेक्टर सेट में अल्फान्यूमेरिक और विशेष प्रतीक शामिल हैं
आउटपुट
प्रोग्राम एक सतत एनिमेशन उत्पन्न करता है जो "मैट्रिक्स" फिल्म के डिजिटल रेन प्रभाव की नकल करता है। प्रत्येक कॉलम में रैंडम कैरेक्टर्स नीचे गिरते हुए दिखाई देते हैं।