Matrix "Animation"



  • Hallo,

    ich habe mich mal daran versucht so etwas ähnliches wie den "Matrix Screen" in der Konsole nachzuahmen. Wie man mit Sicherheit im Quelltext sieht, habe ich noch wenig Erfahrung was die C/C++ Programmierung angeht. Meine Mittel sind also sehr beschränkt 🙂

    An folgenden Problem beiße ich mir die Zähne aus:
    - Ich möchte den Text nicht unten anfügen, sonderen würde die Ausgabe gerne umdrehen so, das der Text eher "nach unten fließt" als wie jetzt "nach oben geschoben wird". Ich wollte den Wagenrücklauf "\r" für printf verwenden, allerdings wird mein Text dann einfach über schrieben, statt weitergeschoben.

    Mein Quelltext:

    #include <stdio.h>
    #include <windows.h>
    #include <cstdlib>
    #include <conio.h>
    
    using namespace std;
    
    int main(){
    
    keybd_event (VK_MENU, 0x38, 0, 0);
    keybd_event (VK_RETURN, 0x1c, 0, 0);
    keybd_event (VK_RETURN, 0X1c, KEYEVENTF_KEYUP, 0);
    keybd_event (VK_MENU, 0x38, KEYEVENTF_KEYUP, 0);
    
    int z[80],j=-1, zufall[80];                                 // j.. Laufvariable
    int zeichen;                                                // z.. Zählvariable für Farbwechsel für jede Spalte
    short int zustand[80];
                                                                // zufall.. Anzahl bis Farbwechsel
                                                                // zeichen.. Ausgabezeichen
                                                                // Zustandspeicher für Farbe in der Spalte
                                                                // zustand = 0 = grün
                                                                // zustand = 1 = hellgrün
                                                                // zustand = 2 = schwarz
    
    HANDLE hStdOut;
    
    	hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    
    for (int i=0;i<80;i++) z[i]=0;
    for (int i=0;i<80;i++) zustand[i]=rand() % 3;
    for (int i=0;i<80;i++) zufall[i]=(rand()/(rand()/45));
    
    while(1){
        j++;
        z[j]++;                                                 // Schleife für Farbwechsel in den Spalten
        if (z[j]==zufall[j]){
            zustand[j]=rand()%3;
            z[j]=0;
            }
    
        switch (zustand[j]){
              case 0:
              SetConsoleTextAttribute(hStdOut, FOREGROUND_GREEN);
              break;
    
              case 1:
              SetConsoleTextAttribute(hStdOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
              break;
    
              case 2:
              break;
        }
    
        do {                                                     // Ermitteln des Zeichens
            zeichen=(33+(rand()%208));
        }while(zeichen>179 && zeichen<224);
    
    if (zustand[j] !=2)    printf("%c",zeichen);
    else                   printf(" ");
    
        if (j==79){                                               // Verzögerung am Zeilenende
            Sleep(80);
            j=-1;
        }
    
    if(kbhit())                                                   // Abbruch bei Tastendruck
     {
      break;
     }
    }
    }
    


  • da gibts doch so ne schöne Seite wo solche Animationen in der Konsole gemacht werden, musst mal eventuell googlen.



  • Ich bin schonmal fündig geworden bezüglich eines Screensavers: http://elouai.com/the_matrix_screensaver.php
    Allerdings übersteigt der Quellcode meine Kenntnisse und die Animation findet auch nicht mehr in der Konsole statt.



  • das schaut sehr nach nem virus aus ... habs gott sei dank nicht entpackt. eine .e datei ... wasn das?



  • Wo bitte siehst du eine '.e'-Datei?
    Beziehungsweise in welchen Archiv?




Anmelden zum Antworten