Πίνακας περιεχομένων:

Κωδικός μήτρας - Visual Basic: 7 βήματα
Κωδικός μήτρας - Visual Basic: 7 βήματα

Βίντεο: Κωδικός μήτρας - Visual Basic: 7 βήματα

Βίντεο: Κωδικός μήτρας - Visual Basic: 7 βήματα
Βίντεο: HTML - ΜΑΘΗΜΑ 5 - ΦΟΡΜΕΣ - ΜΕΡΟΣ 7 από 8 - Ομαδοποίηση controls κ.α. 2024, Ιούλιος
Anonim
Κωδικός μήτρας - Visual Basic
Κωδικός μήτρας - Visual Basic

Ο νέος και βελτιωμένος κώδικας της Visual Basic θα εμφανίσει ένα εφέ σαν το "Matrix", με κύλιση One's και Zero's. Στη συνέχεια περνάει στην ακολουθία Matrix "Wake Up Neo" και μετά συνεχίζει να μετακινείται σε αριθμούς. Συνειδητοποιώ ότι δεν είναι ακριβώς έτσι η ακολουθία μέσα στην ταινία, αλλά υπήρχαν άνθρωποι που ζητούσαν αυτήν τη λειτουργικότητα, οπότε την πρόσθεσα. Νομίζω ότι ο τρόπος με τον οποίο τυχαιοποιώ την εμφάνιση των στηλών του One's και του Zero's είναι το πιο προσεγμένο μέρος του κώδικα. Συζητώ ακριβώς τι έκανα αργότερα. Αυτό το Instructable είναι απάντηση στο Brennn10 "Welcome to the Matrix in Command Prompt" Instructable. Ο κώδικας που απαρτίζει αυτό το Instructable βασίστηκε αρχικά στον κώδικα που δημοσιεύτηκε σε ένα σχόλιο του DarkJoker για το παραπάνω Instructable. Allyμουν σκόπιμα μάλλον ρητός με την εξήγησή μου για τον κώδικα καθώς έχω λάβει αρκετά αιτήματα για διευκρίνιση από την πρώτη στιγμή δημοσίευσε αυτήν τη λύση.

Βήμα 1: Πιάσε τον κωδικό μου

Επισυνάπτω τον κωδικό μου παρακάτω. Αποθηκεύστε και τα δύο αρχεία (startMatrix.itsabat και matrix.itsavbs) στον ίδιο φάκελο στο μηχάνημά σας και καταργήστε το τμήμα "ita" του ονόματος αρχείου, δηλαδή μετονομάστε τα αρχεία σε startMatrix.bat και matrix.vbs. Τα αρχεία bat και τα αρχεία vbs είναι εκτελέσιμα και επομένως δεν μπορώ να τα ανεβάσω με αυτές τις επεκτάσεις εδώ. Αυτός είναι ο λόγος για τον οποίο πρέπει να τα αποθηκεύσετε και να τα μετονομάσετε τοπικά.

Βήμα 2: Εκτέλεση του κώδικα

Εάν θέλετε να εκτελέσετε τον κωδικό μου, ακολουθήστε τις παρακάτω οδηγίες. Εάν δεν θέλετε να εκτελέσετε κάτι στο μηχάνημά σας για το οποίο δεν γνωρίζετε τίποτα, είστε έξυπνοι. Θα πρέπει να προχωρήσετε στο επόμενο βήμα, όπου περπατώ τον κώδικα και σας δείχνω ότι δεν έχω κάνει κάτι παραπλανητικό. Ωστόσο, αν θέλετε απλώς να φτάσετε σε αυτό (ή είστε στη μηχανή κάποιου άλλου και μην φροντίστε), εδώ είναι πώς να ξεκινήσετε τον κώδικα: Βήμα 1: Κάντε διπλό κλικ στο "startMatrix.bat". Αυτό είναι. Τώρα προχωρήστε στο επόμενο βήμα για να διαβάσετε για τη δροσιά που μόλις είδατε.

Βήμα 3: Κατανόηση του Κώδικα, Μέρος 1

Ας ρίξουμε μια ματιά στον κώδικα, ξεκινώντας από την αρχή. Ας ελπίσουμε ότι μπορείτε να μάθετε αρκετά για το VB από τον κώδικά μου, ώστε να απενεργοποιήσετε και να μάθετε πώς να κωδικοποιείτε σε VB καλύτερα από μένα:) Έτσι, πρώτα απ 'όλα, έχουμε 2 αρχεία: ένα αρχείο νυχτερίδας και ένα αρχείο vbs. Εάν επεξεργαστείτε το αρχείο bat, θα παρατηρήσετε ότι εκτελεί το αρχείο vbs, αφού ρυθμίσετε το παράθυρο, το χρώμα κειμένου και τον τίτλο του παραθύρου. Ας προχωρήσουμε στα πιο ενδιαφέροντα πράγματα στο αρχείο vbs. ΠΓΕ, θα αγγίξω μόνο τις πιο ενδιαφέρουσες γραμμές κώδικα εδώ. Επίσης, δώστε ιδιαίτερη σημείωση στις γραμμές που ξεκινούν σε ένα '(τικ, ή μεμονωμένο απόσπασμα) Ε Αυτά είναι σχόλια και δεν θα εκτελεστούν. Οι πρώτες γραμμές του matrix.vbs λένε "Ρυθμίστε τα μηνύματα λάθους μου στο ρητό επίπεδο" αλλά ταυτόχρονα "Μην αφήνετε τυχόν λάθη που έκανα να είναι μοιραία." Δεν χρειάζεται πραγματική συζήτηση. Γραμμή 5: Η αμυδρή μας δήλωση εδώ καθορίζει όλες τις μεταβλητές που θα χρησιμοποιήσουμε καθ 'όλη τη διάρκεια ζωής του μικρού μας προγράμματος. Δεν χρειάζεται να δηλώσουμε τύπους για αυτές τις μεταβλητές ή αρχικές τιμές για αυτές, όπως θα μπορούσαμε να κάνουμε σε άλλες γλώσσες. Το VB είναι "ισχυρό" όπως αυτό. Γραμμή 12: το objSysInfo μας επιτρέπει να συλλέξουμε μερικές πληροφορίες σχετικά με το σύστημα στο οποίο τρέχουμε. Δημιουργούμε το αντικείμενο εδώ και στη γραμμή 13, το objSysInfo. UserName επιστρέφει το όνομα του τρέχοντα συνδεδεμένου χρήστη που εκτελεί αυτόν τον κώδικα. Αυτό θα χρησιμοποιηθεί αργότερα στη θέση του "Neo", έτσι ώστε το σενάριό μας να μπορεί να πει "Wake up, Martin …" εάν τρέχει στο μηχάνημά μου ή "Wake up, Brennn10 …" εάν τρέχει στο μηχάνημα του Brennn10 και αν αυτό ήταν το όνομα χρήστη του. Χρησιμοποιώντας το όνομα χρήστη του συστήματος, μπορείτε να το ρίξετε στο μη ξεκλειδωμένο μηχάνημα του φίλου σας και θα τραβήξει το όνομά του αυτόματα, χωρίς να χρειαστεί να αλλάξετε τον κωδικό. Ας προχωρήσουμε.

Βήμα 4: Κατανόηση του Κώδικα, Μέρος 2

Γραμμή 16: Το sub waitfor είναι η πρώτη μας υπορουτίνα. Μια υπορουτίνα μπορεί να κληθεί από διαφορετικό μέρος του κώδικα, θα εκτελέσει τον κώδικα μέσα στο σώμα της υπορουτίνας και στη συνέχεια θα επιστρέψει τον έλεγχο προγράμματος στον κώδικα κλήσης. Το waitfor μας στήνει το κέλυφος. Κάνοντας αυτό σε έναν βρόχο με έναν "ύπνο" εντός του βρόχου, επιτρέπουμε την ολοκλήρωση της ενεργοποίησης του κελύφους πριν από την επιστροφή του ελέγχου, κάτι που είναι πολύ καλό. Γραμμή 26: η υπο μήτρα είναι η δεύτερη υπορουτίνα μας και παίρνει παράμετρος που ονομάζεται "στοιχεία". Αυτή η υπορουτίνα κάνει την εκτύπωση των δροσερών αριθμών που φαίνεται να "πέφτουν", όπως στην ταινία. Έχω θεωρήσει μερικά πράγματα δεδομένα εδώ. Ας ελπίσουμε ότι εξηγώντας τους θα καταλάβετε από πού προέρχομαι και μπορείτε να το κάνετε καλύτερα από τον Ι. Καταρχάς, υποθέτω ότι θέλετε μόνο 5 στήλες αριθμών και ότι τα "στοιχεία" διαιρούνται με τον αριθμό των στηλών (5). Αυτό ήταν εύκολο να εγγυηθεί γιατί αργότερα δηλώνω ότι οι παράμετροι που μεταβιβάστηκαν στο "matrix" είναι 200 και 100 (καλείται δύο φορές). Υποθέτω επίσης ότι θέλετε και οι 5 στήλες να είναι ενεργοποιημένες από προεπιλογή. Νομίζω ότι φαίνεται εντάξει, αλλά μπορείτε να αλλάξετε μερικά από αυτά σε FALSE αν θέλετε η πρώτη σειρά αριθμών να φαίνεται τόσο τυχαία όσο οι υπόλοιπες σειρές. ΟΚ, άρα έχουμε 5 στήλες, έχουμε 200 / 5 = 40 γραμμές αριθμών προς εμφάνιση (linesToWrite), και όλες οι στήλες μας είναι ενεργοποιημένες από προεπιλογή. Γραμμή 41: εισάγουμε δύο βρόχους "for", ο πρώτος από τους οποίους (Loop A) περνάει από τις γραμμές μαςToWrite και ο δεύτερος (Βρόχος Β) που κάνει τον κύκλο στον αριθμό των στηλών. Στο Loop B, επιλέγουμε την τιμή της μεταβλητής βρόχου loopB και ανάλογα με την τιμή της αξιολογούμε μια πρόταση If-Else. Εάν η εν λόγω στήλη είναι ενεργοποιημένη ("TRUE" ή "ενεργοποιημένη"), θα εκτυπώσουμε, μέσω του "wshshell. SendKeys", την τιμή Int (Round (rnd ())), ακολουθούμενη από μια καρτέλα. Διαφορετικά, θα εκτυπώσουμε μόνο μια καρτέλα, έτσι ώστε η στήλη να φαίνεται κενή. Ποια είναι λοιπόν η τιμή του Int (Round (rnd ())); Το rnd () επιστρέφει έναν τυχαίο αριθμό κυμαινόμενου σημείου μεταξύ 0,0 και 1,0, ο γύρος () θα λάβει αυτήν την τιμή και θα την στρογγυλοποιήσει στην πλησιέστερη τιμή του ακέραιου αριθμού και το Int () θα δώσει το αποτέλεσμα σε έναν ακέραιο. Αυτό το τελευταίο βήμα θα μπορούσε να θεωρηθεί υπερβολικό, αφού η κλήση Round () θα μας έδινε 0 ή 1. Το έκανα μόνο λόγω συνήθειας. Κάποια στιγμή κάποιος πρέπει να μου είπε ότι ήταν πιο ασφαλές και προφανώς δεν το έχω ξεχάσει ακόμα. Στο Μέρος 3…

Βήμα 5: Κατανόηση του Κώδικα, Μέρος 3

Συνεχίζοντας τον υπο-πίνακα, εδώ είναι οι επόμενες γραμμές του VB … "Αυτές οι στήλες με σαγιονάρες", οπότε αν μια στήλη είναι OFF, θα είναι ενεργοποιημένη στο 30 τοις εκατό του χρόνου ", και αν μια στήλη είναι ON, θα είναι απενεργοποιήθηκε το 30 τοις εκατό του χρόνου. turnOffMax = 0,30 turnOnMax = 0,30Εναλλαγή κάθε στήλης το 30% του χρόνου κάνει τις στήλες αριθμών να "πέφτουν" με τυχαίο τρόπο παρόμοιο με αυτό που κάνουν στην ταινία. Όχι ακριβώς, αλλά κοντά. 'Column = flip-flop flipMe = rnd () If ((col1 = turnOn) and (flipMe <turnOffMax)) Στη συνέχεια col1 = turnOff Else If ((col1 = turnOff) και (flipMe <turnOnMax)) Στη συνέχεια col1 = turnOn End IfThe Το παραπάνω μπλοκ χειρίζεται τον τρόπο με τον οποίο καθορίζουμε αν θα εμφανίσουμε έναν αριθμό στη δεδομένη στήλη κατά την επόμενη επανάληψη, για την επόμενη σειρά αριθμών. Ο κώδικας γράφει "εάν η στήλη είναι ενεργοποιημένη και ο τυχαίος αριθμός που ονομάζεται flipMe είναι μικρότερος από 30%, απενεργοποιήστε τη στήλη. Διαφορετικά, εάν η στήλη είναι απενεργοποιημένη και το flipMe είναι μικρότερο από 30%, ενεργοποιήστε τη στήλη." Αυτό αναδιπλώνεται up sub Matrix. Ενεργοποίηση στο δευτερεύον κλειδί…

Βήμα 6: Υποκλειδί ()

Η βασική μέθοδος είναι παρακάτω. Sub key (msg) "κάντε εκτυπώσεις μηνυμάτων" the matrix "και διαγράψτε themwscript.sleep 1500length = len (msg) for position = 1 to length wshshell. SendKeys mid (msg, position, 1) wscript.sleep 250nextwscript.sleep 3000για θέση = 1 έως το μήκος wshshell. SendKeys "{BACKSPACE}" wscript.sleep 75εκτείνετε την υποδιαστολή Αυτή η μέθοδος εκτυπώνει μια συμβολοσειρά "msg". Θα εκτυπώσει οτιδήποτε περάσετε. Αυτή η μέθοδος καλείται αργότερα στον κώδικα. Ο πρώτος βρόχος FOR εκτυπώνει κάθε χαρακτήρα στη συμβολοσειρά, έναν κάθε φορά και κάνει παύση για 250 χιλιοστά του δευτερολέπτου μεταξύ κάθε χαρακτήρα. Στη συνέχεια κοιμόμαστε για 3000 millis (3 δευτερόλεπτα) και γράφουμε ένα backpace για κάθε χαρακτήρα που εκτυπώσαμε προηγουμένως, κοιμόμαστε αυτή τη φορά λίγο λιγότερο. Αυτό είναι όλο. Στο κύριο σώμα του προγράμματος, όπου όλα συνδυάζονται.

Βήμα 7: Κύριο

Η κύρια εκτέλεση του προγράμματος καλεί το waitFor και το matrix (το οποίο έχουμε ήδη καλύψει) για να ρυθμίσετε τα πάντα και να γράψετε 200 δυαδικά ψηφία, κατανεμημένα σε 5 στήλες. Το όνομα του τρέχοντος χρήστη του συστήματος αρπάζεται και χειρίζεται για εκτύπωση ως μέρος της ακολουθίας "ξύπνημα". Στη συνέχεια εισάγουμε έναν βρόχο FOR, τον οποίο γνωρίζουμε ότι θα επαναλάβουμε μόνο 4 φορές λόγω του "1 Περιορισμός 4 ". Στη συνέχεια, επιλέγουμε τη μεταβλητή βρόχου μας (loopA), η οποία ταιριάζει με την πρώτη πρόταση CASE την πρώτη φορά, τη δεύτερη πρόταση CASE τη δεύτερη φορά μέσω του βρόχου, κλπ. Κάθε επανάληψη του βρόχου, το myString έχει οριστεί στη σωστή αναπαράσταση συμβολοσειράς η φράση που θέλουμε να εκτυπώσουμε και η βασική υπορουτίνα καλείται να κάνει την εκτύπωση. Υπάρχουν προφανώς πολλοί άλλοι τρόποι για να σχεδιάσετε αυτόν τον βρόχο και θα το αφήσω ως άσκηση στον αναγνώστη. Μόλις βγούμε από το βρόχο FOR, καλούμε για άλλη μια φορά την υπορουτίνα μήτρας για να εκτυπώσουμε περισσότερους αριθμούς. Όπως λέει το σχόλιο στον κώδικα, μπορείτε να βάλετε αυτήν την τελική κλήση στο matrix () σε έναν βρόχο, αν θέλετε, ή μπορείτε να την καλέσετε με μεγαλύτερο αριθμό, κ.λπ. Τέλος, η κλήση μας για διακοπή εκτέλεση (πάντα καλή πρακτική: P). Ελπίζω όλοι να διασκεδάζουν παίρνοντας το παράδειγμα μου και να το κάνουν καλύτερο! Εάν αυτό το Instructable έχει κεντρίσει την περιέργειά σας με το VB, η Google μπορεί να προσφέρει έναν σωρό καλούς πόρους για να μάθετε περισσότερα σχετικά με αυτό από ό, τι μπορώ να σας πω. Καλή κωδικοποίηση! χελιδόνι

Συνιστάται: