INHOUDSOPGAWE:

Matrikskode - Visual Basic: 7 stappe
Matrikskode - Visual Basic: 7 stappe

Video: Matrikskode - Visual Basic: 7 stappe

Video: Matrikskode - Visual Basic: 7 stappe
Video: Один или несколько проектов в решении не были правильно загружены в Visual Studio 2024, Julie
Anonim
Matrikskode - Visual Basic
Matrikskode - Visual Basic

Nuwe en verbeterde Visual Basic-kode sal 'n "Matrix" -agtige effek vertoon, met die rol van One's en Zero's. Dit sny dan na die Matrix "Wake Up Neo" -reeks, en gaan dan verder met die blaai. Ek besef dit is nie presies hoe die volgorde in die film gaan nie, maar daar was mense wat om hierdie funksie gevra het, so ek het dit bygevoeg. Ek dink die manier waarop ek die vertoning van die kolomme van One's en Zero's randomiseer, is die netjiesste deel van die kode. Ek bespreek presies wat ek later gedoen het. Hierdie instruksies is in reaksie op die instruksies van Brennn10 se "Welcome to the Matrix in Command Prompt". Die kode wat hierdie instruksie uitmaak, was aanvanklik gebaseer op kode wat in 'n opmerking deur DarkJoker op die instruksies hierbo geplaas is. hierdie oplossing geplaas.

Stap 1: Gryp my kode

Ek het my kode hieronder aangeheg. Stoor albei lêers (startMatrix.itsabat en matrix.itsavbs) in dieselfde gids op u masjien en verwyder die "itsa" -gedeelte van die lêernaam, dws hernoem die lêers na startMatrix.bat en matrix.vbs. Bat -lêers en vbs -lêers is uitvoerbaar, en daarom kan ek dit nie met die uitbreidings hier oplaai nie. Daarom moet u dit plaaslik stoor en hernoem.

Stap 2: Die uitvoering van die kode

Volg die onderstaande instruksies as u my kode wil gebruik. As u nie iets op u masjien wil uitvoer nie, waarvan u niks weet nie, is u slim. U moet voortgaan met die volgende stap, waar ek deur die kode gaan en vir u wys dat ek niks bedriegliks gedoen het nie, maar as u net daarby wil uitkom (of as u op iemand anders se masjien is en nie care), hier is hoe u die kode kan afskop: Stap 1: dubbelklik op "startMatrix.bat". Dit is dit. Gaan nou na die volgende stap om te lees oor die koelte wat u pas gesien het.

Stap 3: Begrip van die kode, deel 1

Kom ons kyk na die kode, van die begin af. Hopelik kan u uit my kode genoeg oor VB leer, sodat u kan leer hoe om in VB beter as ek te kodeer. As u die bat -lêer wysig, sal u sien dat dit die vbs -lêer uitvoer nadat u die venster, tekskleur en venstertitel opgestel het. Kom ons gaan oor na die meer interessante dinge in die vbs -lêer. FYI, ek gaan slegs die interessantste kodereëls hier aanraak. Let ook veral op die reëls wat begin met 'n '(regmerkie of enkele aanhaling). Dit is opmerkings, en word NIE uitgevoer nie. Die eerste paar reëls van matrix.vbs sê 'Stel my foutboodskappe op die eksplisiete vlak', maar terselfdertyd 'Moenie dat enige foute wat ek gemaak het, noodlottig is nie.' Geen werklike bespreking nodig nie. Reël 5: Ons dowwe stelling hier stel al die veranderlikes op wat ons gedurende die hele lewe van ons klein program sal gebruik. Ons hoef nie tipes vir hierdie veranderlikes of aanvanklike waardes daarvoor aan te dui nie, soos in sommige ander tale. VB is soos hierdie 'kragtig'. Reël 12: met objSysInfo kan ons inligting versamel oor die stelsel waarop ons werk. Ons skep die voorwerp hier, en op reël 13 gee objSysInfo. UserName die naam van die gebruiker wat tans aangemeld is en hierdie kode uitvoer. Dit sal later in die plek van 'Neo' gebruik word, sodat ons skrif kan sê 'Word wakker, Martin …' as dit op my masjien loop, of 'Word wakker, Brennn10 …' as dit op die masjien van Brennn10 uitgevoer word en as Dit was sy gebruikersnaam. Deur die gebruikersnaam van die stelsel te gebruik, kan u dit op die ontgrendelde masjien van u vriend gooi, en dit sal sy naam outomaties trek sonder om die kode te hoef te verander. Kom ons gaan voort.

Stap 4: Begrip van die kode, deel 2

Reël 16: sub waitfor is ons eerste subroutine. 'N Subroetine kan vanaf 'n ander plek in die kode gebel word, sal die kode in die liggaam van die subroutine uitvoer en dan programbeheer na die oproepkode terugbring. waitfor stel ons dop vir ons op. Deur dit in 'n lus met 'n "slaap" binne die lus te doen, laat ons toe dat die dop geaktiveer word voordat die beheer terugbesorg word, wat baie goed is. Reël 26: submatriks is ons tweede subroutine en neem 'n parameter genoem "elemente". Hierdie subroutine druk die koel getalle wat blykbaar "val", soos in die film, af. Ek het hier 'n paar dinge as vanselfsprekend aanvaar. Hopelik sal u, deur hulle te verduidelik, verstaan waar ek vandaan kom en dit beter kan doen as ek. Eerstens neem ek aan dat u slegs 5 kolomme getalle wil hê en dat 'elemente' deelbaar is met die aantal kolomme (5). Dit was maklik om te waarborg, want later verklaar ek dat die parameters wat na "matriks" oorgedra is 200 en 100 is (dit word twee keer genoem). Ek neem ook aan dat u alle 5 kolomme standaard wil aanskakel. Ek dink dit lyk goed, maar u kan 'n paar hiervan na ONWAAR verander as u wil hê dat die eerste getallelyn so lukraak lyk soos die res van die rye. OK, dus het ons 5 kolomme, ons het 200 / 5 = 40 reëls getalle wat vertoon moet word (linesToWrite), en al ons kolomme is standaard aangeskakel. Reël 41: ons sluit twee "vir" lusse in, waarvan die eerste (lus A) deur ons linesToWrite en die tweede loop (Lus B) wat deur die aantal kolomme loop. In lus B kies ons die waarde van die lusveranderlike lus B, en afhangende van die waarde daarvan, evalueer ons 'n If-Else-stelling. As die betrokke kolom geaktiveer is ("WAAR" of "aangeskakel"), sal ons die waarde van Int (rondte (rnd ())) via "wshshell. SendKeys" druk, gevolg deur 'n oortjie. Anders druk ons slegs 'n oortjie sodat die kolom leeg lyk, en wat is die waarde van Int (Round (rnd ()))? rnd () gee 'n ewekansige drywende puntgetal tussen 0.0 en 1.0, Round () neem die waarde en rond dit na die naaste heelgetalwaarde, en Int () gooi die resultaat na 'n heelgetal. Hierdie laaste stap kan as te veel beskou word, aangesien die Round () -oproep ons 0 of 1. moet gee. Ek het dit net as gevolg van die gewoonte gedoen. Op 'n stadium moes iemand vir my gesê het dat dit veiliger was, en ek het dit blykbaar nog nie vergeet nie.

Stap 5: Begrip van die kode, deel 3

Vervolgende submatriks, hier is die volgende paar reëls VB … 'Hierdie flip-flops-kolomme', so as 'n kolom UIT is, word dit 30 persent van die tyd AANgeskakel ', en as 'n kolom AAN is, sal dit wees 30 persent van die tyd afgeskakel. turnOffMax = 0.30 turnOnMax = 0.30 Deur elke kolom 30% van die tye te tik, laat die getalkolomme ewekansig "val", soortgelyk aan die manier waarop hulle in die film doen. Nie presies nie, maar naby. 'Kolom 1 flip-flop flipMe = rnd () If ((col1 = turnOn) en (flipMe <turnOffMax)) Dan col1 = turnOff Else If ((col1 = turningOff) en (flipMe <turnOnMax)) Dan col1 = turnOn End IfThe Bogenoemde blok hanteer hoe ons bepaal of ons gedurende die volgende iterasie 'n getal in die gegewe kolom gaan vertoon, vir die volgende ry getalle. Die kode lees "as die kolom aan is en die ewekansige getal flipMe minder as 30%is, skakel die kolom uit. Andersins, as die kolom af is en flipMe minder as 30%is, skakel die kolom aan." up sub Matrix. Op na subsleutel …

Stap 6: Sub -sleutel ()

Die sleutelmetode is hieronder. Sub -sleutel (msg) om afdrukke van "die matriks" -boodskappe te doen, en vee themwscript.sleep 1500length = len (msg) uit vir posisie = 1 tot lengte wshshell. SendKeys mid (msg, position, 1) wscript.sleep 250nextwscript.sleep 3000for position = 1 to length wshshell. SendKeys "{BACKSPACE}" wscript.sleep 75nextend subThis method prints a string "msg". Dit sal alles druk wat u deurgee. Hierdie metode word later in die kode genoem. Die eerste FOR -lus druk elke karakter in die string een vir een uit en stop vir 250 millisekondes tussen elke karakter. Ons slaap dan 3000 millis (3 sekondes) en skryf 'n agterkant vir elke karakter wat ons voorheen gedruk het, en slaap hierdie keer 'n bietjie minder. Dit is alles. Op na die hoofdeel van die program, waar alles bymekaar kom.

Stap 7: Hoof

Die hoofuitvoering van die program noem waitFor en matrix (wat ons reeds behandel het) om alles op te stel en 200 binêre syfers uit te skryf, versprei oor 5 kolomme. Die naam van die huidige stelselgebruiker word dan gegryp en gemanipuleer om uitgedruk te word as deel van die "wakker" -reeks. Ons voer dan 'n FOR -lus in, waarvan ons weet dat ons slegs 4 keer herhaal as gevolg van die "1 Tot 4 "beperking. Ons kies dan ons lusveranderlike (lusA), wat pas by die eerste CASE -stelling die eerste keer, die tweede CASE -stelling die tweede keer deur die lus, ens. Elke iterasie van die lus, myString is ingestel op die korrekte stringvoorstelling van die woord wat ons wil druk, en die sleutelsubroetine word benodig om die drukwerk te doen. Daar is natuurlik baie ander maniere om hierdie lus te ontwerp, en ek sal dit as 'n oefening aan die leser oorlaat. Nadat ons die FOR -lus verlaat, bel ons weer die matriks -subroutine om meer syfers uit te druk. Soos die opmerking in die kode sê, kan u hierdie laaste oproep na matrix () in 'n lus plaas, of u kan dit net met 'n groter nommer bel, ens. Uiteindelik kan ons oproep om te stop () die program stop uitvoering (altyd goeie praktyk: P). Hoop almal geniet dit om my voorbeeld te neem en dit beter te maak! As hierdie Instructable u nuuskierigheid by VB gewek het, kan Google 'n klomp goeie hulpbronne bied om meer daaroor te leer as wat ek u kan vertel. Gelukkige kodering! martin

Aanbeveel: