Cuprins:

Matrix Code - Visual Basic: 7 pași
Matrix Code - Visual Basic: 7 pași

Video: Matrix Code - Visual Basic: 7 pași

Video: Matrix Code - Visual Basic: 7 pași
Video: matrix multiplication in vb.net 2024, Iulie
Anonim
Matrix Code - Visual Basic
Matrix Code - Visual Basic

Codul Visual Basic nou și îmbunătățit va afișa un efect de tip „Matrix”, cu defilarea One și Zero. Apoi trece la secvența Matrix "Wake Up Neo" și apoi continuă să deruleze numerele. Îmi dau seama că nu exact cum merge secvența în film, dar au existat oameni care cer această funcționalitate, așa că am adăugat-o. Cred că modul în care randomizez afișarea coloanelor One și Zero este cea mai îngrijită parte a codului. Discut exact ceea ce am făcut mai târziu. Acest instructabil este ca răspuns la instructiunea „Bine ați venit la matricea în linia de comandă” a lui Brennn10. Codul care alcătuiește acest Instructable s-a bazat inițial pe codul postat într-un comentariu de DarkJoker la Instructable-ul de mai sus. Am fost intenționat destul de explicit cu explicația mea despre cod, deoarece am primit destul de multe cereri de clarificare de când am început a postat această soluție.

Pasul 1: Prindeți codul meu

Am atașat codul meu mai jos. Salvați ambele fișiere (startMatrix.itsabat și matrix.itsavbs) în același folder de pe mașina dvs. și eliminați porțiunea "itsa" a numelui fișierului, adică redenumiți fișierele în startMatrix.bat și matrix.vbs. Fișierele Bat și fișierele VBS sunt executabile și, prin urmare, nu le pot încărca cu acele extensii aici. Acesta este motivul pentru care trebuie să le salvați și să le redenumiți local.

Pasul 2: Executarea codului

Dacă doriți să rulați codul meu, urmați instrucțiunile de mai jos. Dacă nu doriți să executați ceva pe mașina dvs. despre care nu știți nimic, sunteți inteligent. Ar trebui să treceți la pasul următor, unde parcurg codul și vă arăt că nu am făcut nimic mincinos. grijă), iată cum să declanșați codul: Pasul 1: faceți dublu clic pe „startMatrix.bat”. Asta este. Acum treceți la pasul următor pentru a citi despre răceala pe care tocmai ați văzut-o.

Pasul 3: Înțelegerea codului, partea 1

Să aruncăm o privire la cod, începând de la început. Sperăm că puteți afla suficient despre VB din codul meu, încât veți ieși și veți învăța cum să codificați în VB mai bine decât mine:) Deci, mai întâi, avem două fișiere: un fișier bat și un fișier vbs. Dacă editați fișierul bat, veți observa că acesta execută fișierul vbs, după ce ați configurat fereastra, culoarea textului și titlul ferestrei. Să trecem la lucrurile mai interesante din fișierul vbs. FYI, voi atinge doar cele mai interesante linii de cod aici. De asemenea, acordați o atenție specială liniilor care încep cu un '(bifă sau citat simplu). Acestea sunt comentarii și NU SE EXECUTĂ. Primele câteva rânduri ale matrix.vbs spun „Setați mesajele de eroare la nivelul explicit”, dar în același timp „Nu lăsați greșelile pe care le-am făcut să fie fatale”. Nu este necesară nicio discuție reală. Linia 5: Afirmația noastră slabă stabilește aici toate variabilele pe care le vom folosi de-a lungul vieții micului nostru program. Nu trebuie să declarăm tipuri pentru aceste variabile sau valori inițiale pentru ele, așa cum am putea face în alte limbi. VB este „puternic” ca acesta. Linia 12: objSysInfo ne permite să adunăm câteva informații despre sistemul pe care rulăm. Creăm obiectul aici și, pe linia 13, objSysInfo. UserName returnează numele utilizatorului conectat curent care execută acest cod. Acest lucru va fi folosit mai târziu în locul „Neo”, astfel încât scriptul nostru să poată spune „Trezește-te, Martin …” dacă este rulat pe mașina mea sau „Trezește-te, Brennn10 …” dacă se rulează pe mașina lui Brennn10 și dacă Acesta a fost numele său de utilizator. Utilizarea numelui de utilizator al sistemului vă permite să o aruncați pe mașina deblocată a prietenului dvs. și acesta va trage numele său automat, fără a fi nevoie să modificați codul. Să mergem mai departe.

Pasul 4: Înțelegerea codului, partea 2

Linia 16: sub waitfor este primul nostru subprogram. Un subrutin poate fi apelat dintr-un loc diferit din cod, va executa codul în corpul subrutinei și va readuce apoi controlul programului la codul de apelare. waitfor ne pregătește coaja. Făcând acest lucru într-o buclă cu un „somn” în buclă, permitem activarea shell-ului să se finalizeze înainte ca controlul să fie returnat, ceea ce este un lucru foarte bun. Linia 26: sub matricea este a doua noastră subrutină și ia parametru numit „elemente”. Acest subprogram face imprimarea numerelor reci care par să „cadă”, ca în film. Am luat câteva lucruri de la sine înțeles aici. Sperăm că, explicându-le, veți înțelege de unde vin și o puteți face mai bine decât mine. În primul rând, presupun că doriți doar 5 coloane de numere și că „elementele” sunt divizibile cu numărul de coloane (5). Acest lucru a fost ușor de garantat, deoarece ulterior declar parametrii trecuți la "matrice" ca fiind 200 și 100 (se numește de două ori). Presupun, de asemenea, că doriți ca toate cele 5 coloane să fie activate în mod implicit. Cred că arată OK, dar ați putea schimba câteva dintre acestea în FALS dacă doriți ca prima linie de numere să pară la fel de aleatorie precum vor fi restul rândurilor. OK, deci avem 5 coloane, avem 200 / 5 = 40 de linii de numere de afișat (linesToWrite) și toate coloanele noastre sunt activate în mod implicit. (Bucla B) care parcurge numărul de coloane. În Loop B, selectăm valoarea variabilei loop loopB și, în funcție de valoarea acesteia, evaluăm o instrucțiune If-Else. Dacă coloana în cauză este Activată („TRUE” sau „pornită”), vom imprima, prin „wshshell. SendKeys”, valoarea Int (Round (rnd ())), urmată de o filă. În caz contrar, vom imprima doar o filă, astfel încât coloana să pară goală. Deci, care este valoarea Int (Round (rnd ()))? rnd () returnează un număr aleatoriu în virgulă mobilă între 0,0 și 1,0, Round () va lua acea valoare și o va rotunji la cea mai apropiată valoare Integer, iar Int () aruncă rezultatul într-un Integer. Acest ultim pas ar putea fi considerat excesiv, deoarece apelul Round () ar trebui să ne dea 0 sau 1. Am făcut-o doar din cauza obișnuinței. La un moment dat, cineva trebuie să-mi fi spus că este mai sigur și se pare că încă nu am uitat-o.

Pasul 5: Înțelegerea codului, partea 3

Continuând sub Matricea, iată următoarele câteva linii ale VB … „Aceste coloane cu flip-flops”, deci dacă o coloană este OPRITĂ, aceasta va fi pornită 30 la sută din timp, „și dacă o coloană este PORNITĂ, va fi a oprit 30% din timp. turnOffMax = 0,30 turnOnMax = 0,30 Comutarea fiecărei coloane 30% din timp face ca numărul coloanelor să "cadă" într-un mod aleatoriu similar cu modul în care se întâmplă în film. Nu exact, dar aproape. 'Coloana 1 flip-flop flipMe = rnd () Dacă ((col1 = turnOn) și (flipMe <turnOffMax)) Apoi col1 = turnOff Else If ((col1 = turnOff) și (flipMe <turnOnMax)) Apoi col1 = turnOn End IfThe blocul de mai sus gestionează modul în care determinăm dacă vom afișa un număr în coloana dată în următoarea iterație, pentru următorul rând de numere. Codul citește „dacă coloana este activă, iar numărul aleatoriu numit flipMe este mai mic de 30%, opriți coloana. În caz contrar, dacă coloana este dezactivată și flipMe este mai mică de 30%, porniți coloana”. sus sub Matrix. Porniți sub cheia …

Pasul 6: Tasta secundară ()

Metoda cheii este mai jos.sub key (msg) 'do printouts of "the matrix" messages and delete themwscript.sleep 1500length = len (msg) for position = 1 to length wshshell. SendKeys mid (msg, position, 1) wscript.sleep 250nextwscript.sleep 3000pentru poziția = 1 până la lungimea wshshell. SendKeys "{BACKSPACE}" wscript.sleep 75nextend subAceastă metodă imprimă un șir "msg". Va imprima orice treceți. Această metodă este apelată mai târziu în cod. Prima buclă FOR tipărește fiecare caracter din șir, unul câte unul, și face pauze pentru 250 de milisecunde între fiecare caracter. Apoi dormim 3000 de milis (3 secunde) și scriem un backspace pentru fiecare personaj pe care l-am tipărit anterior, dormind de data aceasta puțin mai puțin. Asta este tot. Accesați corpul principal al programului, unde totul se reuneste.

Pasul 7: Principal

Execuția principală a programului solicită waitFor și matrice (pe care le-am acoperit deja) pentru a configura totul și a scrie 200 de cifre binare, răspândite pe 5 coloane. Numele utilizatorului actual al sistemului este apoi apucat și manipulat pentru a fi tipărit ca parte a secvenței „trezire”. Intrăm apoi într-o buclă FOR, pe care știm că o vom itera doar de 4 ori din cauza „1 La 4 constrângere. Apoi selectăm variabila buclă (loopA), care se potrivește cu prima instrucțiune CASE prima dată, cu a doua instrucțiune CASE a doua oară prin buclă, etc. Fiecare iterație a buclei, myString este setată la reprezentarea corectă a șirului verbul pe care dorim să-l imprimăm, iar subrutina cheie este chemată să efectueze tipărirea. Există, evident, multe alte modalități de a proiecta această buclă și o voi lăsa ca exercițiu pentru cititor. Odată ce ieșim din bucla FOR, apelăm din nou subrutina matricială pentru a imprima mai multe numere. Așa cum spune comentariul din cod, puteți plasa acest apel final la matrix () într-o buclă, dacă doriți, sau îl puteți apela doar cu un număr mai mare, etc. executare (întotdeauna bună practică: P). Sper că toată lumea se distrează luând exemplul meu și îmbunătățindu-l! Dacă acest Instructable v-a stârnit curiozitatea cu VB, Google vă poate oferi o mulțime de resurse bune pentru a afla mai multe despre asta decât vă pot spune. Codificare fericită! Martin

Recomandat: