Inhaltsverzeichnis:

Matrixcode - Visual Basic - Gunook
Matrixcode - Visual Basic - Gunook

Video: Matrixcode - Visual Basic - Gunook

Video: Matrixcode - Visual Basic - Gunook
Video: Урок #39 Visual Basic - Генератор QR кода VB.NET ►◄ 2024, Juli
Anonim
Matrixcode - Visual Basic
Matrixcode - Visual Basic

Neuer und verbesserter Visual Basic-Code zeigt einen "Matrix"-ähnlichen Effekt mit scrollenden Einsen und Nullen an. Es schneidet dann auf die Matrix "Wake Up Neo" -Sequenz und scrollt dann weiter durch die Zahlen. Mir ist klar, dass die Sequenz nicht genau so im Film verläuft, aber es gab Leute, die nach dieser Funktionalität fragten, also habe ich sie hinzugefügt. Ich denke, die Art und Weise, wie ich die Anzeige der Spalten von Einsen und Nullen randomisiere, ist der sauberste Teil des Codes. Ich bespreche genau, was ich später getan habe. Dieses Instructable ist eine Reaktion auf Brennn10s "Willkommen in der Matrix in der Eingabeaufforderung" Instructable. Der Code, aus dem dieses Instructable besteht, basierte ursprünglich auf Code, der in einem Kommentar von DarkJoker zum obigen Instructable gepostet wurde habe diese Lösung gepostet.

Schritt 1: Holen Sie sich meinen Code

Ich habe meinen Code unten angehängt. Speichern Sie beide Dateien (startMatrix.itsabat und matrix.itsavbs) im selben Ordner auf Ihrem Computer und entfernen Sie den "itsa"-Teil des Dateinamens, d.h. benennen Sie die Dateien in startMatrix.bat und matrix.vbs um. Bat-Dateien und vbs-Dateien sind ausführbar, und daher kann ich sie hier nicht mit diesen Erweiterungen hochladen. Aus diesem Grund müssen Sie diese lokal speichern und umbenennen.

Schritt 2: Ausführen des Codes

Wenn Sie meinen Code ausführen möchten, befolgen Sie die folgenden Anweisungen. Wenn Sie auf Ihrem Computer nichts ausführen möchten, von dem Sie nichts wissen, sind Sie schlau. Sie sollten zum nächsten Schritt übergehen, in dem ich den Code durchgehe und Ihnen zeige, dass ich nichts Falsches getan habe care), so starten Sie den Code:Schritt 1: Doppelklicken Sie auf "startMatrix.bat". Das war's. Fahren Sie nun mit dem nächsten Schritt fort, um über die Coolness zu lesen, die Sie gerade gesehen haben.

Schritt 3: Den Code verstehen, Teil 1

Schauen wir uns den Code von vorne an. Hoffentlich können Sie aus meinem Code genug über VB lernen, damit Sie besser als ich lernen, in VB zu programmieren:)Also das Wichtigste zuerst, wir haben 2 Dateien: eine bat-Datei und eine vbs-Datei. Wenn Sie die bat-Datei bearbeiten, werden Sie feststellen, dass sie die vbs-Datei ausführt, nachdem Sie das Fenster, die Textfarbe und den Fenstertitel eingerichtet haben. Kommen wir zu den interessanteren Dingen in der vbs-Datei. Zu Ihrer Information, ich werde hier nur die interessantesten Codezeilen berühren. Beachten Sie auch die Zeilen, die mit einem ' (Häkchen oder einfaches Anführungszeichen) beginnen.. Dies sind Kommentare und WERDEN NICHT AUSGEFÜHRT. Die ersten paar Zeilen von matrix.vbs sagen "Setze meine Fehlermeldungen auf die explizite Ebene", aber gleichzeitig "Lass keine Fehler, die ich gemacht habe, fatal sein." Keine wirkliche Diskussion erforderlich. Zeile 5: Unsere dim-Anweisung hier richtet alle Variablen ein, die wir während der gesamten Lebensdauer unseres kleinen Programms verwenden werden. Wir müssen für diese Variablen keine Typen oder Anfangswerte für sie deklarieren, wie dies in einigen anderen Sprachen der Fall wäre. VB ist so "mächtig". Zeile 12: objSysInfo lässt uns einige Informationen über das System sammeln, auf dem wir laufen. Wir erstellen das Objekt hier und in Zeile 13 gibt objSysInfo. UserName den Namen des aktuell angemeldeten Benutzers zurück, der diesen Code ausführt. Dies wird später anstelle von "Neo" verwendet, damit unser Skript "Wake up, Martin…" sagen kann, wenn es auf meinem Computer ausgeführt wird, oder "Wake up, Brennn10…", wenn es auf dem Computer von Brennn10 ausgeführt wird und wenn das war sein Benutzername. Wenn Sie den Benutzernamen des Systems verwenden, können Sie ihn auf den entsperrten Computer Ihres Freundes werfen und seinen Namen automatisch abrufen, ohne den Code ändern zu müssen. Gehen wir weiter.

Schritt 4: Den Code verstehen, Teil 2

Zeile 16: sub waitfor ist unser erstes Unterprogramm. Ein Unterprogramm kann von einer anderen Stelle im Code aufgerufen werden, führt den Code im Rumpf des Unterprogramms aus und gibt dann die Programmsteuerung an den aufrufenden Code zurück. waitfor richtet unsere Shell für uns ein. Indem wir dies in einer Schleife mit einem "Schlaf" innerhalb der Schleife tun, erlauben wir, dass die Aktivierung der Shell abgeschlossen ist, bevor die Kontrolle zurückgegeben wird, was eine sehr gute Sache ist. Zeile 26: Untermatrix ist unsere zweite Unterroutine und nimmt a Parameter namens "Elemente". Dieses Unterprogramm druckt die coolen Zahlen, die wie im Film zu "fallen" erscheinen. Ich habe hier einige Dinge als selbstverständlich angesehen. Hoffentlich verstehst du, wenn du sie erklärst, woher ich komme und kannst es besser als ich. Zunächst einmal gehe ich davon aus, dass du nur 5 Zahlenspalten willst und dass "Elemente" durch die Anzahl der Spalten teilbar sind (5). Dies war leicht zu garantieren, da ich später die an "matrix" übergebenen Parameter für 200 und 100 deklariere (es wird zweimal aufgerufen). Ich gehe auch davon aus, dass Sie alle 5 Spalten standardmäßig aktivieren möchten. Ich denke, es sieht in Ordnung aus, aber Sie könnten einige davon in FALSE ändern, wenn Sie möchten, dass die erste Zahlenzeile so zufällig erscheint wie die restlichen Zeilen. OK, wir haben also 5 Spalten, wir haben 200 / 5 = 40 anzuzeigende Zahlenzeilen (linesToWrite), und alle unsere Spalten sind standardmäßig eingeschaltet. Zeile 41: Wir treten in zwei "for" -Schleifen ein, von denen die erste (Loop A) unsere linesToWrite und die zweite durchläuft (Schleife B), die die Anzahl der Spalten durchläuft. In Schleife B wählen wir den Wert der Schleifenvariable loopB aus, und abhängig von seinem Wert werten wir eine If-Else-Anweisung aus. Wenn die fragliche Spalte aktiviert ist ("TRUE" oder "eingeschaltet"), drucken wir über "wshshell. SendKeys" den Wert von Int(Round(rnd())), gefolgt von einem Tabulator. Andernfalls drucken wir nur eine Registerkarte, sodass die Spalte leer erscheint. Was ist also der Wert von Int(Round(rnd()))? rnd() gibt eine zufällige Gleitkommazahl zwischen 0.0 und 1.0 zurück, Round() nimmt diesen Wert und rundet ihn auf den nächsten Integer-Wert und Int() wandelt das Ergebnis in einen Integer um. Dieser letzte Schritt könnte als übertrieben angesehen werden, da der Aufruf von Round() 0 oder 1 ergeben sollte. Ich habe es nur aus Gewohnheit gemacht. Irgendwann muss mir jemand gesagt haben, dass es sicherer ist, und ich habe es anscheinend noch nicht vergessen. Weiter zu Teil 3…

Schritt 5: Den Code verstehen, Teil 3

Fortsetzung der Sub-Matrix, hier sind die nächsten paar Zeilen von VB…' Dies schaltet die Spalten um, 'wenn also eine Spalte AUS ist, wird sie in 30 Prozent der Fälle eingeschaltet,' und wenn eine Spalte EIN ist, wird es 30 Prozent der Zeit ausgeschaltet. turnOffMax = 0.30 turnOnMax = 0.30Wenn jede Spalte in 30 % der Fälle umgeschaltet wird, "fallen" die Zahlenspalten auf zufällige Weise, ähnlich wie im Film. Nicht genau, aber nah dran. ' Spalte 1 Flip-Flop flipMe = rnd() If ((col1 = TurnOn) und (flipMe < turnOffMax)) Then col1 = TurnOff Else If ((col1 = TurnOnMax)) Then col1 = TurnOn End IfThe Der obige Block behandelt, wie wir bestimmen, ob wir während der nächsten Iteration für die nächste Zahlenreihe eine Zahl in der angegebenen Spalte anzeigen. Der Code lautet: "Wenn die Spalte eingeschaltet ist und die Zufallszahl namens flipMe kleiner als 30 % ist, schalten Sie die Spalte aus. Andernfalls, wenn die Spalte ausgeschaltet ist und flipMe weniger als 30 % beträgt, schalten Sie die Spalte ein." Sub-Matrix hoch. Weiter zum Unterschlüssel…

Schritt 6: Unterschlüssel ()

Die Schlüsselmethode befindet sich unter.sub key(msg)' druckt "die Matrix"-Nachrichten aus und löscht siewscript.sleep 1500length = len(msg)for position = 1 to length wshshell. SendKeys mid(msg, position, 1) wscript.sleep 250nextwscript.sleep 3000for position = 1 to length wshshell. SendKeys "{BACKSPACE}" wscript.sleep 75nextend subDiese Methode gibt einen String "msg" aus. Es druckt alles, was Sie ihm übergeben. Diese Methode wird später im Code aufgerufen. Die erste FOR-Schleife gibt jedes Zeichen in der Zeichenfolge einzeln aus und pausiert 250 Millisekunden zwischen jedem Zeichen. Wir schlafen dann für 3000 Millis (3 Sekunden) und schreiben für jedes zuvor gedruckte Zeichen eine Rücktaste, diesmal etwas weniger schlafen. Das ist alles. Weiter zum Hauptteil des Programms, wo alles zusammenkommt.

Schritt 7: Haupt

Die Hauptausführung des Programms ruft waitFor und matrix auf (die wir bereits behandelt haben), um alles einzurichten und 200 Binärziffern, verteilt auf 5 Spalten, auszugeben. Der Name des aktuellen Systembenutzers wird dann erfasst und manipuliert, um als Teil der "Aufwach"-Sequenz ausgedruckt zu werden. Wir treten dann in eine FOR-Schleife ein, von der wir wissen, dass wir aufgrund der "1 Auf 4"-Beschränkung. Dann SELECT für unsere Schleifenvariable (loopA), die beim ersten Durchlauf mit der ersten CASE-Anweisung, beim zweiten Durchlauf der zweiten CASE-Anweisung usw. übereinstimmt. Bei jeder Iteration der Schleife wird myString auf die korrekte Zeichenfolgendarstellung von gesetzt das Wort, das wir drucken möchten, und die Schlüssel-Subroutine wird aufgerufen, um den Ausdruck tatsächlich durchzuführen. Es gibt offensichtlich viele andere Möglichkeiten, diese Schleife zu entwerfen, und ich überlasse dies dem Leser als Übung. Sobald wir die FOR-Schleife verlassen haben, rufen wir erneut die Matrix-Unterroutine auf, um weitere Zahlen auszugeben. Wie der Kommentar im Code sagt, können Sie diesen letzten Aufruf von matrix() in eine Schleife setzen, wenn Sie möchten, oder Sie können ihn einfach mit einer größeren Zahl aufrufen usw. Schließlich bricht unser Aufruf von quit() das Programm ab Ausführung (immer gute Praxis:P). Ich hoffe, alle haben Spaß, mein Beispiel zu nehmen und es besser zu machen! Wenn dieses Instructable Ihre Neugier auf VB geweckt hat, kann Google eine Menge guter Ressourcen bereitstellen, um mehr darüber zu erfahren, als ich Ihnen sagen kann. Viel Spaß beim Codieren! Martin

Empfohlen: