Sommario:

Codice a matrice - Visual Basic: 7 passaggi
Codice a matrice - Visual Basic: 7 passaggi

Video: Codice a matrice - Visual Basic: 7 passaggi

Video: Codice a matrice - Visual Basic: 7 passaggi
Video: #13 Gestire dati con MATRICI di variabili e LISTE di variabili - Programmare da zero in Visual Basic 2024, Luglio
Anonim
Codice a matrice - Visual Basic
Codice a matrice - Visual Basic

Il codice Visual Basic nuovo e migliorato mostrerà un effetto simile a "Matrix", con uno e zero a scorrimento. Quindi taglia sulla sequenza Matrix "Wake Up Neo" e poi continua a scorrere i numeri. Mi rendo conto che non è esattamente come va la sequenza all'interno del film, ma c'erano persone che chiedevano questa funzionalità, quindi l'ho aggiunta. Penso che il modo in cui randomizzo la visualizzazione delle colonne di One e Zero sia la parte più ordinata del codice. Discuto esattamente quello che ho fatto in seguito. Questo Instructable è in risposta a Instructable "Benvenuto in Matrix nel prompt dei comandi" di Brennn10. Il codice che compone questo Instructable si basava inizialmente sul codice pubblicato in un commento di DarkJoker su Instructable sopra. Sono stato intenzionalmente piuttosto esplicito con la mia spiegazione del codice poiché ho ricevuto alcune richieste di chiarimento da quando ho iniziato postato questa soluzione

Passaggio 1: prendi il mio codice

Ho allegato il mio codice qui sotto. Salva entrambi i file (startMatrix.itsabat e matrix.itsavbs) all'interno della stessa cartella sul tuo computer e rimuovi la parte "itsa" del nome del file, ovvero rinomina i file in startMatrix.bat e matrix.vbs. I file Bat e i file vbs sono eseguibili e quindi non posso caricarli con quelle estensioni qui. Questo è il motivo per cui è necessario salvarli e rinominarli localmente.

Passaggio 2: esecuzione del codice

Se vuoi eseguire il mio codice, segui le istruzioni seguenti. Se non vuoi eseguire qualcosa sulla tua macchina di cui non sai nulla, sei intelligente. Dovresti andare al passaggio successivo, dove passo attraverso il codice e ti mostro che non ho fatto nulla di subdolo. Tuttavia, se vuoi solo arrivarci (o sei sulla macchina di qualcun altro e non care), ecco come avviare il codice: Passaggio 1: fare doppio clic su "startMatrix.bat". Ora vai al passaggio successivo per leggere la freschezza che hai appena visto.

Passaggio 3: comprensione del codice, parte 1

Diamo un'occhiata al codice, partendo dall'inizio. Spero che tu possa imparare abbastanza su VB dal mio codice che imparerai a codificare in VB meglio di me:) Quindi per prima cosa, abbiamo 2 file: un file bat e un file vbs. Se modifichi il file bat, noterai che esegue il file vbs, dopo aver impostato la finestra, il colore del testo e il titolo della finestra. Passiamo alle cose più interessanti nel file vbs. Cordiali saluti, qui parlerò solo delle righe di codice più interessanti. Inoltre, presta particolare attenzione alle righe che iniziano con un ' (segno di spunta o apice). Questi sono commenti e NON SARANNO ESEGUITI. Le prime righe di matrix.vbs dicono "Imposta i miei messaggi di errore al livello esplicito" ma allo stesso tempo "Non lasciare che gli errori che ho commesso siano fatali". Non è necessaria una vera discussione. Riga 5: La nostra dichiarazione dim qui imposta tutte le variabili che useremo per tutta la vita del nostro piccolo programma. Non abbiamo bisogno di dichiarare i tipi per queste variabili, oi valori iniziali per loro, come potremmo in alcuni altri linguaggi. VB è "potente" come questo. Riga 12: objSysInfo ci permette di raccogliere alcune informazioni sul sistema su cui stiamo eseguendo. Creiamo l'oggetto qui e, alla riga 13, objSysInfo. UserName restituisce il nome dell'utente attualmente connesso che sta eseguendo questo codice. Questo verrà utilizzato in seguito al posto di "Neo", in modo che il nostro Script possa dire "Sveglia, Martin…" se viene eseguito sulla mia macchina, o "Sveglia, Brennn10…" se viene eseguito sulla macchina di Brennn10 e se quello era il suo nome utente. L'uso del nome utente del sistema ti consente di lanciarlo sulla macchina sbloccata del tuo amico e tirerà il suo nome automaticamente, senza dover modificare il codice. Andiamo avanti.

Passaggio 4: comprensione del codice, parte 2

Riga 16: sub waitfor è la nostra prima subroutine. Una subroutine può essere chiamata da una posizione diversa nel codice, eseguirà il codice all'interno del corpo della subroutine e quindi restituirà il controllo del programma al codice chiamante. waitfor imposta la nostra shell per noi. Facendo questo in un ciclo con uno "sleep" all'interno del ciclo, consentiamo il completamento dell'attivazione della shell prima che il controllo venga restituito, il che è un'ottima cosa. Riga 26: la sottomatrice è la nostra seconda subroutine e richiede un parametro chiamato "elementi". Questa subroutine esegue la stampa dei fantastici numeri che sembrano "cadere", come nel film. Ho dato per scontate alcune cose qui. Spero che spiegandoli capirai da dove vengo e puoi farlo meglio di me. Prima di tutto, presumo che tu voglia solo 5 colonne di numeri e che "elementi" sia divisibile per il numero di colonne (5). Questo è stato facile da garantire perché in seguito dichiaro che i parametri passati a "matrix" sono 200 e 100 (viene chiamato due volte). Presumo inoltre che tu voglia attivare tutte e 5 le colonne per impostazione predefinita. Penso che sembri OK, ma potresti cambiare alcuni di questi in FALSE se vuoi che la prima riga di numeri sembri casuale come lo sarà il resto delle righe. OK, quindi abbiamo 5 colonne, abbiamo 200 / 5 = 40 righe di numeri da visualizzare (linesToWrite), e tutte le nostre colonne sono attive per impostazione predefinita. Riga 41: entriamo in due cicli "for", il primo dei quali (Loop A) scorre le nostre righe da scrivere e il secondo (Loop B) che scorre il numero di colonne. In Loop B, selezioniamo sul valore della variabile loop loopB e, a seconda del suo valore, valutiamo un'istruzione If-Else. Se la colonna in questione è Enabled ("TRUE", o "attivata"), stamperemo, tramite "wshshell. SendKeys", il valore di Int(Round(rnd())), seguito da un tab. Altrimenti, stamperemo solo una scheda, in modo tale che la colonna appaia vuota. Quindi qual è il valore di Int(Round(rnd()))? rnd() restituisce un numero a virgola mobile casuale compreso tra 0.0 e 1.0, Round() prenderà quel valore e lo arrotonderà al valore Integer più vicino e Int() converte il risultato in un Integer. Quest'ultimo passaggio potrebbe essere considerato eccessivo, poiché la chiamata Round() dovrebbe darci 0 o 1. L'ho fatto solo per abitudine. Ad un certo punto qualcuno deve avermi detto che era più sicuro, e a quanto pare non l'ho ancora dimenticato. Alla parte 3…

Passaggio 5: comprensione del codice, parte 3

Continuando con la sottoMatrice, ecco le prossime righe di VB…' Questo ribalta le colonne, ' quindi se una colonna è OFF, verrà attivata il 30 percento delle volte, ' e se una colonna è ON, sarà spento il 30 percento delle volte. turnOffMax = 0,30 turnOnMax = 0,30 Commutando ogni colonna il 30% delle volte fa "cadere" le colonne numeriche in modo casuale simile a come avviene nel film. Non esatto, ma vicino. ' Colonna 1 flip-flop flipMe = rnd() If ((col1 = acceso) e (flipMe < turnOffMax)) Then col1 = spento Else If ((col1 = spento) e (flipMe < turnOnMax)) Then col1 = acceso End IfThe il blocco sopra gestisce il modo in cui determiniamo se visualizzeremo un numero nella colonna data durante l'iterazione successiva, per la riga successiva di numeri. Il codice dice "se la colonna è attiva e il numero casuale chiamato flipMe è inferiore al 30%, disattiva la colonna. Altrimenti, se la colonna è disattivata e flipMe è inferiore al 30%, attiva la colonna". sotto matrice. Al tasto secondario…

Passaggio 6: sottochiave()

Il metodo chiave è sotto.sub key(msg)' stampa dei messaggi "the matrix" e cancellaliwscript.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 subQuesto metodo stampa una stringa "msg". Stamperà tutto ciò che gli passi. Questo metodo viene chiamato più avanti nel codice. Il primo ciclo FOR stampa ogni carattere della stringa, uno alla volta, e fa una pausa di 250 millisecondi tra ogni carattere. Quindi dormiamo per 3000 millis (3 secondi) e scriviamo un backspace per ogni carattere che abbiamo stampato in precedenza, dormendo questa volta un po' meno. Questo è tutto. Al corpo principale del programma, dove tutto si riunisce.

Passaggio 7: principale

L'esecuzione principale del programma chiama waitFor e matrix (che abbiamo già trattato) per impostare tutto e scrivere 200 cifre binarie, distribuite su 5 colonne. Il nome dell'utente del sistema corrente viene quindi catturato e manipolato per essere stampato come parte della sequenza di "risveglio". Quindi inseriamo un ciclo FOR, che sappiamo che itereremo solo più di 4 volte a causa del "1 Al vincolo di 4". Quindi SELECT sulla nostra variabile di ciclo (loopA), che corrisponde alla prima istruzione CASE la prima volta, alla seconda istruzione CASE la seconda volta al ciclo, ecc. Ad ogni iterazione del ciclo, myString è impostato sulla rappresentazione di stringa corretta di la verbosità che vogliamo stampare e la subroutine chiave viene chiamata per eseguire effettivamente la stampa. Ci sono ovviamente molti altri modi per progettare questo ciclo, e lo lascerò come esercizio al lettore. Una volta usciti dal ciclo FOR, chiamiamo ancora una volta la subroutine matrice per stampare più numeri. Come dice il commento nel codice, puoi mettere questa chiamata finale a matrix() in un ciclo se lo desideri, oppure puoi semplicemente chiamarla con un numero più grande, ecc. Infine, la nostra chiamata a quit() interrompe il programma esecuzione (sempre buona pratica:P). Spero che tutti si divertano a prendere il mio esempio ea renderlo migliore! Se questo Instructable ha stuzzicato la tua curiosità con VB, Google può fornire un sacco di buone risorse per saperne di più di quanto io possa dirti. Buona codifica! martina

Consigliato: