Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में फॉलिंग मैट्रिक्स का कार्यान्वयन

फॉलिंग मैट्रिक्स इफेक्ट

हमने विभिन्न फिल्मों में फॉलिंग मैट्रिक्स दृश्य देखा है। यहां हम देखेंगे कि 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 एनिमेशन गति को नियंत्रित करता है
  • कैरेक्टर सेट में अल्फान्यूमेरिक और विशेष प्रतीक शामिल हैं

आउटपुट

प्रोग्राम एक सतत एनिमेशन उत्पन्न करता है जो "मैट्रिक्स" फिल्म के डिजिटल रेन प्रभाव की नकल करता है। प्रत्येक कॉलम में रैंडम कैरेक्टर्स नीचे गिरते हुए दिखाई देते हैं।

C++ में फॉलिंग मैट्रिक्स का कार्यान्वयन
  1. - C++ में फ़िज़ बज़ कार्यान्वयन

    इस समस्या में, हम फ़िज़-बज़ समस्या के कार्यान्वयन और प्रकार देखेंगे। फ़िज़ बज़ − यह एक सरल प्रोग्रामिंग समस्या है जिसमें प्रोग्रामर 1 से 100 तक की संख्याओं में 3 के सभी गुणकों को ‘Fizz’ और 5 के सभी गुणकों को ‘Buzz’ में बदल देता है। समस्या को समझने के लिए एक उदाहरण लेते

  1. C++ में मैट्रिक्स की पंक्ति-वार बनाम स्तंभ-वार ट्रैवर्सल C++ में मैट्रिक्स की पंक्ति-वार बनाम स्तंभ-वार ट्रैवर्सल

    एक मैट्रिक्स को दो तरीकों से ट्रैवर्स किया जा सकता है। पंक्ति-वार ट्रैवर्सल प्रत्येक पंक्ति को एक-एक करके पहले पंक्ति से शुरू करके अंतिम पंक्ति तक देखता है। पंक्ति में तत्व इंडेक्स 0 से अंतिम इंडेक्स तक लौटाए जाते हैं। स्तंभ-वार ट्रैवर्सल में, तत्वों को पहले स्तंभ से अंतिम स्तंभ तक क्रम में ट्रैवर्स

  1. - C++ में बूलियन मैट्रिक्स प्रश्न

    यहां हम एक रोचक बूलियन मैट्रिक्स समस्या देखेंगे। एक बूलियन मैट्रिक्स दिया गया है जिसमें 0 और 1 हैं। हमारा लक्ष्य यह ढूंढना है कि 1 कहां मार्क किया गया है। यदि 1 स्थिति mat[i,j] पर मार्क किया गया है, तो हम पंक्ति i और स्तंभ j के सभी एंट्रीज को 1 बना देंगे। एक उदाहरण देखते हैं। यदि मैट्रिक्स नीचे जैसा