Indholdsfortegnelse:

Matrixkode - Visual Basic: 7 trin
Matrixkode - Visual Basic: 7 trin

Video: Matrixkode - Visual Basic: 7 trin

Video: Matrixkode - Visual Basic: 7 trin
Video: How to make a GeoIP in Visual Basic 2024, Juli
Anonim
Matrixkode - Visual Basic
Matrixkode - Visual Basic

Ny og forbedret Visual Basic-kode vil vise en "Matrix" -lignende effekt med rullende One's og Zero's. Det skærer derefter til Matrix "Wake Up Neo" -sekvensen og fortsætter derefter med at rulle numre. Jeg er klar over, at det ikke ligefrem er, hvordan sekvensen går i filmen, men der var folk, der bad om denne funktionalitet, så jeg tilføjede det. Jeg tror, at den måde, jeg randomiserer visningen af kolonnerne i One's og Zero's, er den pæneste del af koden. Jeg diskuterer præcis, hvad jeg gjorde senere. Denne instruerbare er som svar på Brennn10's "Welcome to the Matrix in Command Prompt" Instructable. Koden, der udgør denne Instructable, var oprindeligt baseret på kode, der blev indsendt i en kommentar af DarkJoker på ovenstående Instructable. postet denne løsning.

Trin 1: Hent min kode

Jeg har vedhæftet min kode herunder. Gem begge filer (startMatrix.itsabat og matrix.itsavbs) i den samme mappe på din maskine, og fjern "itsa" -delen af filnavnet, dvs. omdøb filerne til startMatrix.bat og matrix.vbs. Batfiler og vbs -filer kan eksekveres, og derfor kan jeg ikke uploade dem med disse udvidelser her. Det er derfor, du skal gemme og omdøbe dem lokalt.

Trin 2: Udførelse af koden

Hvis du vil køre min kode, skal du følge instruktionerne herunder. Hvis du ikke vil udføre noget på din maskine, som du ikke ved noget om, er du smart. Du skal gå videre til det næste trin, hvor jeg går gennem koden og viser dig, at jeg ikke har gjort noget skidt, men hvis du bare vil komme til det (eller hvis du er på en andens maskine og ikke gør det care), sådan starter koden: Trin 1: Dobbeltklik på "startMatrix.bat". Det er det. Gå nu videre til det næste trin for at læse om den sejhed, du lige har set.

Trin 3: Forståelse af koden, del 1

Lad os se på koden fra begyndelsen. Forhåbentlig kan du lære nok om VB fra min kode, så du går ud og lærer at kode i VB bedre end mig:) Så først og fremmest har vi 2 filer: en bat -fil og en vbs -fil. Hvis du redigerer bat -filen, vil du bemærke, at den udfører vbs -filen efter opsætning af vinduet, tekstfarve og vinduetitel. Lad os gå videre til de mere interessante ting i vbs -filen. FYI, jeg kommer kun til at berøre de mest interessante kodelinjer her. Vær også særlig opmærksom på linjerne, der starter med et '(kryds eller enkelt citat). Dette er kommentarer, og bliver IKKE UDFØRT. De første par linjer i matrix.vbs siger "Indstil mine fejlmeddelelser til det eksplicitte niveau" men på samme tid "Lad ikke nogen fejl, jeg begik være fatale." Ingen reel diskussion nødvendig. Linje 5: Vores svage udsagn her opstiller alle de variabler, vi vil bruge i løbet af vores lille program. Vi behøver ikke at deklarere typer for disse variabler eller startværdier for dem, som vi måske gør på nogle andre sprog. VB er "kraftfuld" som denne. Linje 12: objSysInfo lader os samle nogle oplysninger om det system, vi kører på. Vi opretter objektet her, og på linje 13 returnerer objSysInfo. UserName navnet på den aktuelt loggede bruger, der udfører denne kode. Dette vil blive brugt senere i stedet for "Neo", så vores script kan sige "Vågn op, Martin …", hvis det køres på min maskine, eller "Vågn op, Brennn10 …", hvis det køres på Brennn10s maskine, og hvis Det var hans brugernavn. Ved hjælp af systemets brugernavn kan du smide det på din kammerats ulåste maskine, og det trækker hans navn automatisk uden at skulle ændre koden. Lad os gå videre.

Trin 4: Forståelse af koden, del 2

Linje 16: sub waitfor er vores første underprogram. En underprogram kan kaldes fra et andet sted i koden, vil udføre koden i underprogrammets krop og derefter vende programstyringen tilbage til opkaldskoden. waitfor sætter vores skal op til os. Ved at gøre dette i en sløjfe med en "søvn" i sløjfen, tillader vi aktiveringen af skallen at afslutte, før kontrollen returneres, hvilket er en meget god ting. Linie 26: submatrix er vores anden underprogram, og tager en parameter kaldet "elementer". Denne underrutine udskriver de seje tal, der ser ud til at "falde", som i filmen. Jeg har taget et par ting for givet her. Forhåbentlig ved at forklare dem, forstår du, hvor jeg kommer fra, og kan gøre det bedre end jeg. For det første antager jeg, at du kun vil have 5 kolonner med tal, og at "elementer" kan deles med antallet af kolonner (5). Dette var let at garantere, fordi jeg senere erklærer de parametre, der blev sendt til "matrix" til 200 og 100 (det kaldes to gange). Jeg går også ud fra, at du vil have alle 5 kolonner slået til som standard. Jeg synes, at det ser ok ud, men du kan ændre et par af disse til FALSKT, hvis du ville have den første linje med tal til at virke lige så tilfældig, som resten af rækker vil være. OK, så vi har 5 kolonner, vi har 200 / 5 = 40 linjer med tal, der skal vises (linesToWrite), og alle vores kolonner er som standard slået til. Linje 41: vi går ind i to "for" sløjfer, hvoraf den første (Loop A) cykler gennem vores linesToWrite og den anden (Loop B), der går gennem antallet af kolonner. I Loop B vælger vi værdien af loop-variabel loopB, og afhængig af dens værdi evaluerer vi en If-Else-sætning. Hvis den pågældende kolonne er aktiveret ("SAND" eller "tændt"), udskriver vi værdien af Int (runde (rnd ()) efter "wshshell. SendKeys" efterfulgt af en fane. Ellers udskriver vi kun en fane, så kolonnen vises tom. Så hvad er værdien af Int (Round (rnd ())))? rnd () returnerer et tilfældigt flydende tal mellem 0,0 og 1,0, Round () tager denne værdi og afrunder den til den nærmeste Integer -værdi, og Int () kaster resultatet til et Integer. Dette sidste trin kan betragtes som overkill, da Round () -opkaldet skulle give os 0 eller 1. Jeg gjorde det bare på grund af vane. På et tidspunkt må nogen have fortalt mig, at det var mere sikkert, og jeg har tilsyneladende ikke glemt det endnu. Til del 3 …

Trin 5: Forståelse af koden, del 3

Fortsat submatrix, her er de næste par linjer i VB … 'Denne flip-flops kolonner', så hvis en kolonne er OFF, vil den blive tændt 30 procent af tiden, 'og hvis en kolonne er ON, vil den være slukket 30 procent af tiden. turnOffMax = 0.30 turnOnMax = 0.30Toggling hver kolonne 30% af tiden får nummerkolonnerne til at falde tilfældigt på samme måde som de gør i filmen. Ikke præcist, men tæt på. '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 ovenstående blok håndterer, hvordan vi afgør, om vi skal vise et tal i den givne kolonne i løbet af den næste iteration, for den næste række med tal. Koden lyder "hvis kolonnen er tændt, og det tilfældige tal kaldet flipMe er mindre end 30%, skal du slukke for kolonnen. Ellers, hvis kolonnen er slukket og flipMe er mindre end 30%, skal du tænde for kolonnen." Det ombrydes up sub Matrix. Videre til subnøgle …

Trin 6: Subnøgle ()

Nøglemetoden er below.sub key (msg) 'gør udskrifter af "matrix" -meddelelserne, og slet themwscript.sleep 1500length = len (msg) for position = 1 til længde wshshell. SendKeys mid (msg, position, 1) wscript.sleep 250nextwscript.sleep 3000for position = 1 til længden wshshell. SendKeys "{BACKSPACE}" wscript.sleep 75nextend sub Denne metode udskriver en streng "msg". Det vil udskrive alt, hvad du sender det. Denne metode kaldes senere i koden. Den første FOR -loop udskriver hvert tegn i strengen, et ad gangen, og holder pause i 250 millisekunder mellem hvert tegn. Vi sover derefter i 3000 millis (3 sekunder) og skriver et backspace ud for hvert tegn, vi tidligere har udskrevet, og sover denne gang lidt mindre. Det er alt, hvad der er ved det. Videre til programmets hoveddel, hvor alt hænger sammen.

Trin 7: Main

Hovedudførelsen af programmet kalder waitFor og matrix (som vi allerede har dækket) for at opsætte alt og skrive 200 binære cifre, fordelt på 5 kolonner. Navnet på den nuværende systembruger bliver derefter grebet og manipuleret til at blive udskrevet som en del af "wake up" -sekvensen. Vi indtaster derefter en FOR -loop, som vi ved, at vi kun gentager over 4 gange på grund af "1 Til 4 "begrænsning. Vi SELECT derefter på vores loop -variabel (loopA), som matcher den første CASE -sætning første gang igennem, den anden CASE -sætning anden gang gennem loop, etc. Hver iteration af loop, myString er sat til den korrekte strengrepræsentation af det ordsprog, vi vil udskrive, og nøglesubrutinen kaldes til faktisk at udskrive. Der er naturligvis mange andre måder at designe denne sløjfe på, og jeg vil overlade det som en øvelse til læseren. Når vi forlader FOR -sløjfen, kalder vi igen matrixens underprogram for at udskrive flere tal. Som kommentaren i koden siger, kan du sætte dette sidste opkald til matrix () i en loop, hvis du vil, eller du kan bare kalde det med et større nummer osv. Endelig afbryder vores opkald til at afslutte () program udførelse (altid god praksis: P). Håber alle har det sjovt med at tage mit eksempel og gøre det bedre! Hvis denne instruktør har vakt din nysgerrighed med VB, kan Google levere masser af gode ressourcer til at lære mere om det, end jeg kan fortælle dig. Glad kodning! martin

Anbefalede: