Innholdsfortegnelse:

Matrisekode - Visual Basic: 7 trinn
Matrisekode - Visual Basic: 7 trinn

Video: Matrisekode - Visual Basic: 7 trinn

Video: Matrisekode - Visual Basic: 7 trinn
Video: Windows on Mac is official 2024, Juli
Anonim
Matrisekode - Visual Basic
Matrisekode - Visual Basic

Ny og forbedret Visual Basic-kode vil vise en "Matrix" -aktig effekt, med rulling av One's og Zero's. Den kutter deretter til Matrix "Wake Up Neo" -sekvensen, og fortsetter deretter å rulle tall. Jeg skjønner at dette ikke akkurat er hvordan sekvensen går i filmen, men det var folk som spurte om denne funksjonaliteten, så jeg la den til. Jeg tror måten jeg randomiserer visningen av kolonnene til One's og Zero's er den peneste delen av koden. Jeg diskuterer nøyaktig hva jeg gjorde senere. Denne instruerbare er som svar på Brennn10s "Welcome to the Matrix in Command Prompt" Instructable. Koden som utgjør denne instruksen var opprinnelig basert på kode som ble lagt ut i en kommentar av DarkJoker på ovennevnte Instructable. postet denne løsningen.

Trinn 1: Ta tak i koden min

Jeg har lagt ved koden min nedenfor. Lagre begge filene (startMatrix.itsabat og matrix.itsavbs) i samme mappe på maskinen din, og fjern "itsa" -delen av filnavnet, dvs. gi filene nytt navn til startMatrix.bat og matrix.vbs. Batfiler og vbs -filer er kjørbare, og derfor kan jeg ikke laste dem opp med de utvidelsene her. Det er derfor du må lagre og gi nytt navn til dem lokalt.

Trinn 2: Utførelse av koden

Hvis du vil kjøre koden min, følger du instruksjonene nedenfor. Hvis du ikke vil utføre noe på maskinen din som du ikke vet noe om, er du smart. Du bør gå videre til neste trinn, der jeg går gjennom koden og viser deg at jeg ikke har gjort noe avskyelig, men hvis du bare vil komme til det (eller hvis du er på en annens maskin og ikke gjør det care), slik starter du koden: Trinn 1: dobbeltklikk på "startMatrix.bat". Det er det. Fortsett nå til neste trinn for å lese om kulheten du nettopp så.

Trinn 3: Forstå koden, del 1

La oss ta en titt på koden, fra begynnelsen. Forhåpentligvis kan du lære nok om VB fra koden min til at du går av og lærer hvordan du koder i VB bedre enn meg:) Så først, først har vi 2 filer: en flaggermusfil og en vbs -fil. Hvis du redigerer flaggermusfilen, vil du legge merke til at den kjører vbs -filen etter at du har konfigurert vinduet, tekstfargen og vinduetittelen. La oss gå videre til de mer interessante tingene i vbs -filen. FYI, jeg kommer bare til å berøre de mest interessante kodelinjene her. Vær også oppmerksom på linjene som starter med et '(kryss eller enkelt sitat). Dette er kommentarer, og blir IKKE UTFØRT. De første linjene i matrix.vbs sier "Sett mine feilmeldinger til det eksplisitte nivået", men samtidig "Ikke la noen feil jeg har gjort være fatale." Ingen reell diskusjon nødvendig. Linje 5: Vår svake uttalelse her setter opp alle variablene vi skal bruke i løpet av livet til vårt lille program. Vi trenger ikke å deklarere typer for disse variablene eller innledende verdier for dem, slik vi kan gjøre på noen andre språk. VB er "kraftig" som denne. Linje 12: objSysInfo lar oss samle informasjon om systemet vi kjører på. Vi oppretter objektet her, og på linje 13 returnerer objSysInfo. UserName navnet på den påloggede brukeren som kjører denne koden. Dette vil bli brukt senere i stedet for "Neo", slik at skriptet vårt kan si "Wake up, Martin …" hvis det kjøres på maskinen min, eller "Wake up, Brennn10 …" hvis det kjøres på Brennn10s maskin og hvis Det var hans brukernavn. Ved å bruke systemets brukernavn kan du kaste det på kompisens ulåste maskin, og det vil trekke navnet hans automatisk uten å måtte endre koden. La oss gå videre.

Trinn 4: Forstå koden, del 2

Linje 16: sub waitfor er vår første underprogram. En subrutine kan kalles fra et annet sted i koden, vil utføre koden i delprogrammets kropp, og vil deretter returnere programkontrollen til ringekoden. waitfor setter opp skallet vårt for oss. Ved å gjøre dette i en sløyfe med en "søvn" i løkken, lar vi aktiveringen av skallet fullføres før kontrollen returneres, noe som er en veldig god ting. Linje 26: submatrise er vår andre underprogram, og tar en parameter som kalles "elementer". Denne subrutinen skriver ut de kule tallene som ser ut til å "falle", som i filmen. Jeg har tatt noen ting for gitt her. Forhåpentligvis vil du ved å forklare dem forstå hvor jeg kommer fra og kan gjøre det bedre enn jeg. For det første antar jeg at du bare vil ha 5 kolonner med tall, og at "elementer" er delelig med antall kolonner (5). Dette var lett å garantere fordi jeg senere erklærer parametrene som er overført til "matrise" til 200 og 100 (det kalles to ganger). Jeg antar også at du vil at alle 5 kolonnene skal være slått på som standard. Jeg synes det ser OK ut, men du kan endre noen av disse til FALSE hvis du vil at den første talllinjen skal virke like tilfeldig som resten av radene. OK, så vi har 5 kolonner, vi har 200 / 5 = 40 linjer med tall som skal vises (linesToWrite), og alle kolonnene våre er slått på som standard. Linje 41: vi går inn i to "for" -løkker, hvorav den første (Loop A) går gjennom våre linesToWrite og den andre (Loop B) som går gjennom antall kolonner. I løkke B velger vi på verdien av sløyfevariabel loopB, og avhengig av verdien evaluerer vi en If-Else-setning. Hvis den aktuelle kolonnen er Aktivert ("TRUE" eller "slått på"), vil vi skrive ut, via "wshshell. SendKeys", verdien til Int (Round (rnd ())), etterfulgt av en fane. Ellers vil vi bare skrive ut en fane slik at kolonnen ser tom ut. Så hva er verdien av Int (Round (rnd ()))? rnd () returnerer et tilfeldig flytende tall mellom 0,0 og 1,0, Round () vil ta den verdien og runde den til nærmeste heltallverdi, og Int () kaster resultatet til et heltall. Dette siste trinnet kan betraktes som overkill, siden Round () -kallingen skulle gi oss 0 eller 1. Jeg gjorde det bare på grunn av vane. På et tidspunkt må noen ha fortalt meg at det var tryggere, og jeg har tydeligvis ikke glemt det ennå. Til del 3 …

Trinn 5: Forstå koden, del 3

Fortsettende delmatrise, her er de neste linjene i VB … 'Disse flip-flops-kolonnene', så hvis en kolonne er AV, vil den slås PÅ 30 prosent av tiden, 'og hvis en kolonne er PÅ, vil den være slått AV 30 prosent av tiden. turnOffMax = 0.30 turnOnMax = 0.30Toggling hver kolonne 30% av tiden får tallkolonnene til å "falle" på en tilfeldig måte som de gjør i filmen. Ikke nøyaktig, men nær. 'Kolonne 1 flip-flop flipMe = rnd () If ((col1 = turnOn) og (flipMe <turnOffMax)) Så col1 = turnOff Else If ((col1 = turnOff) og (flipMe <turnOnMax)) Så col1 = turnOn End IfThe over blokken håndterer hvordan vi avgjør om vi skal vise et tall i den gitte kolonnen i løpet av neste iterasjon, for neste radrekke. Koden lyder "hvis kolonnen er på, og det tilfeldige tallet kalt flipMe er mindre enn 30%, slå av kolonnen. Ellers, hvis kolonnen er av og flipMe er mindre enn 30%, slår du på kolonnen." Det omsluttes opp sub Matrix. Videre til subnøkkel …

Trinn 6: Subnøkkel ()

Nøkkelmetoden er under. Subnøkkel (msg) gjør utskrifter av "matrisen" -meldingene, og slett themwscript.sleep 1500length = len (msg) for posisjon = 1 til lengde wshshell. SendKeys mid (msg, position, 1) wscript.sleep 250nextwscript.sleep 3000for position = 1 to length wshshell. SendKeys "{BACKSPACE}" wscript.sleep 75nextend sub Denne metoden skriver ut en "msg" -streng. Det vil skrive ut alt du sender det. Denne metoden kalles senere i koden. Den første FOR -løkken skriver ut hvert tegn i strengen, ett om gangen, og stopper i 250 millisekunder mellom hvert tegn. Vi sover deretter i 3000 millis (3 sekunder) og skriver ut en bakside for hvert tegn vi tidligere har skrevet ut, og sover denne gangen litt mindre. Det er alt som skal til. Videre til programmets hoveddel, der alt kommer sammen.

Trinn 7: Main

Hovedutførelsen av programmet kaller waitFor og matrise (som vi allerede har dekket) for å sette opp alt og skrive ut 200 binære sifre, fordelt på 5 kolonner. Navnet på den nåværende systembrukeren blir deretter fanget og manipulert for å bli skrevet ut som en del av "våkne" -sekvensen. Vi går deretter inn i en FOR -sløyfe, som vi vet at vi bare vil gjenta over 4 ganger på grunn av "1 Til 4 "begrensning. Vi VELGER deretter på vår loop -variabel (loopA), som matcher den første CASE -setningen første gangen, den andre CASE -setningen andre gangen gjennom loop, etc. Hver iterasjon av loop, myString er satt til riktig strengrepresentasjon av ordtaket vi vil skrive ut, og nøkkelsubrutinen kalles til faktisk å skrive ut. Det er åpenbart mange andre måter å designe denne sløyfen, og jeg vil overlate det som en øvelse til leseren. Når vi forlater FOR -løkken, ringer vi igjen matrisen til underprogrammet for å skrive ut flere tall. Som kommentaren i koden sier, kan du sette dette siste anropet til matrise () i en sløyfe hvis du vil, eller du kan bare ringe det med et større nummer, etc. Til slutt, vår oppfordring til å avslutte () avbryter programmet utførelse (alltid god praksis: P). Håper alle har det gøy med å ta mitt eksempel og gjøre det bedre! Hvis denne instruksjonsboken har vakt nysgjerrigheten din til VB, kan Google tilby massevis av gode ressurser for å lære mer om det enn jeg kan fortelle deg. God koding! martin

Anbefalt: