Innehållsförteckning:

Matriskod - Visual Basic: 7 steg
Matriskod - Visual Basic: 7 steg

Video: Matriskod - Visual Basic: 7 steg

Video: Matriskod - Visual Basic: 7 steg
Video: Matris 2024, Juli
Anonim
Matriskod - Visual Basic
Matriskod - Visual Basic

Ny och förbättrad Visual Basic-kod kommer att visa en "Matrix" -liknande effekt, med rullning av One's och Zero's. Den skär sedan till Matrix "Wake Up Neo" -sekvensen och fortsätter sedan med att bläddra i siffror. Jag inser att det inte är exakt hur sekvensen går in i filmen, men det var folk som frågade efter den här funktionen, så jag lade till den. Jag tror att sättet jag randomiserar visningen av kolumnerna i One's och Zero's är den snyggaste delen av koden. Jag diskuterar exakt vad jag gjorde senare. Denna instruerbara är ett svar på Brennn10: s "Welcome to the Matrix in Command Prompt" Instructable. Koden som utgör denna instruerbara baserades inledningsvis på kod som publicerades i en kommentar av DarkJoker på ovanstående Instructable. postat den här lösningen.

Steg 1: Ta tag i min kod

Jag har bifogat min kod nedan. Spara båda filerna (startMatrix.itsabat och matrix.itsavbs) i samma mapp på din maskin och ta bort "itsa" -delen av filnamnet, dvs byta namn på filerna till startMatrix.bat och matrix.vbs. Batfiler och vbs -filer är körbara, och därför kan jag inte ladda upp dem med dessa tillägg här. Det är därför du måste spara och byta namn på dem lokalt.

Steg 2: Exekvering av koden

Om du vill köra min kod, följ instruktionerna nedan. Om du inte vill köra något på din maskin som du inte vet någonting om är du smart. Du bör gå vidare till nästa steg, där jag går igenom koden och visar dig att jag inte har gjort något avskyvärt, men om du bara vill komma till det (eller om du är på någon annans maskin och inte gör det care), så här startar du koden: Steg 1: dubbelklicka på "startMatrix.bat". Det är det. Fortsätt nu till nästa steg för att läsa om den svalhet du just såg.

Steg 3: Förstå koden, del 1

Låt oss ta en titt på koden, från början. Förhoppningsvis kan du lära dig tillräckligt om VB från min kod för att du ska gå iväg och lära dig att koda i VB bättre än mig:) Så först och främst har vi 2 filer: en bat -fil och en vbs -fil. Om du redigerar bat -filen kommer du att märka att den kör vbs -filen efter att fönstret, textfärgen och fönstret har ställts in. Låt oss gå vidare till de mer intressanta sakerna i vbs -filen. FYI, jag kommer bara att beröra de mest intressanta kodraderna här. Var också särskilt uppmärksam på raderna som börjar med ett '(kryss eller ett citat). Det här är kommentarer, och kommer INTE att KÖRAS. De första raderna i matrix.vbs säger "Ställ in mina felmeddelanden till den uttryckliga nivån" men samtidigt "Låt inga misstag jag gjort vara dödliga." Ingen egentlig diskussion behövs. Linje 5: Vårt svaga uttalande här sätter upp alla variabler som vi kommer att använda under hela vårt lilla program. Vi behöver inte deklarera typer för dessa variabler eller initialvärden för dem, som vi kanske gör på vissa andra språk. VB är "kraftfull" så här. Linje 12: objSysInfo låter oss samla lite information om systemet som vi kör på. Vi skapar objektet här, och på rad 13 returnerar objSysInfo. UserName namnet på den för närvarande inloggade användaren som kör denna kod. Detta kommer att användas senare i stället för "Neo", så att vårt manus kan säga "Vakna, Martin …" om det körs på min maskin, eller "Vakna, Brennn10 …" om det körs på Brennn10s maskin och om det var hans användarnamn. Genom att använda systemets användarnamn kan du kasta det på din kompis olåsta maskin och det kommer att dra hans namn automatiskt, utan att behöva ändra koden. Låt oss gå vidare.

Steg 4: Förstå koden, del 2

Rad 16: sub waitfor är vår första delprogram. En subrutin kan anropas från en annan plats i koden, kommer att köra koden i delrutans kropp och återföra sedan programkontrollen till anropskoden. waitfor sätter upp vårt skal för oss. Genom att göra detta i en slinga med en "sömn" i slingan, tillåter vi aktiveringen av skalet att slutföras innan kontrollen returneras, vilket är mycket bra. Linje 26: submatris är vår andra subrutin och tar en parameter som kallas "element". Denna underrutin skriver ut de coola siffrorna som verkar "falla", som i filmen. Jag har tagit några saker för givet här. Förhoppningsvis förstår du var jag kommer ifrån och kan göra det bättre än jag. Först och främst antar jag att du bara vill ha 5 kolumner med siffror och att "element" är delbart med antalet kolumner (5). Detta var lätt att garantera eftersom jag senare deklarerar parametrarna som överförs till "matris" till 200 och 100 (det kallas två gånger). Jag antar också att du vill att alla fem kolumnerna ska vara på som standard. Jag tycker att det ser OK ut, men du kan ändra några av dessa till FALSE om du vill att den första raden med siffror ska verka lika slumpmässig som resten av raderna kommer att vara. OK, så vi har 5 kolumner, vi har 200 / 5 = 40 rader med siffror att visa (linesToWrite), och alla våra kolumner är aktiverade som standard. Linje 41: vi går in i två "för" -slingor, varav den första (loop A) går igenom våra linesToWrite och den andra (Loop B) som går igenom antalet kolumner. I loop B väljer vi värdet på loop-variabeln loopB, och beroende på dess värde utvärderar vi en If-Else-sats. Om den aktuella kolumnen är Aktiverad ("SANT" eller "aktiverad") kommer vi att skriva ut värdet på Int (Round (rnd ())) via "wshshell. SendKeys", följt av en flik. Annars skriver vi bara ut en flik så att kolumnen visas tom. Så vad är värdet på Int (Round (rnd ()))? rnd () returnerar ett slumpmässigt flyttal mellan 0,0 och 1,0, Round () tar det värdet och rundar det till närmaste heltal och Int () kastar resultatet till ett heltal. Det här sista steget kan betraktas som överkill, eftersom Call () -ropet borde ge oss 0 eller 1. Jag gjorde det bara på grund av vana. Någon gång måste någon ha berättat för mig att det var säkrare, och jag har tydligen inte glömt det än. Till del 3 …

Steg 5: Förstå koden, del 3

Fortsatt delmatris, här är de närmaste raderna i VB … "De här flip-flops-kolumnerna", så om en kolumn är AV kommer den att vara PÅ 30 procent av tiden "och om en kolumn är PÅ kommer den att vara stängde av 30 procent av tiden. turnOffMax = 0.30 turnOnMax = 0.30Toggling varje kolumn 30% av tiden gör att talkolumnerna "faller" på ett slumpmässigt sätt som de gör i filmen. Inte exakt, men nära. 'Kolumn 1 flip-flop flipMe = rnd () If ((col1 = turnOn) och (flipMe <turnOffMax)) Sedan col1 = turnOff Else If ((col1 = turnOff) och (flipMe <turnOnMax)) Sedan col1 = turnOn End IfThe ovanstående block hanterar hur vi avgör om vi ska visa ett nummer i den angivna kolumnen under nästa iteration, för nästa rad med siffror. Koden lyder "om kolumnen är på och slumpmässigt tal som kallas flipMe är mindre än 30%, stäng av kolumnen. Annars, om kolumnen är avstängd och flipMe är mindre än 30%, slå på kolumnen." Det omsluter upp undermatris. Vidare till undernyckel …

Steg 6: Sub -nyckel ()

Nyckelmetoden är nedan. Subnyckel (msg) gör utskrifter av "matrisen" -meddelanden och raderar themwscript.sleep 1500length = len (msg) för position = 1 till längd wshshell. SendKeys mid (msg, position, 1) wscript.sleep 250nextwscript.sleep 3000för position = 1 till längden wshshell. SendKeys "{BACKSPACE}" wscript.sleep 75nextend sub Denna metod skriver ut en "msg" -sträng. Det kommer att skriva ut allt du passerar det. Denna metod kallas senare i koden. Den första FOR -slingan skriver ut varje tecken i strängen, ett i taget, och pausar i 250 millisekunder mellan varje tecken. Vi sover sedan i 3000 millis (3 sekunder) och skriver ut en backspace för varje tecken vi tidigare skrivit ut, sover den här gången lite mindre. Det är allt som behövs. Vidare till programmets huvuddel, där allt går ihop.

Steg 7: Huvud

Huvudkörningen av programmet kallar waitFor och matrix (som vi redan har täckt) för att ställa in allt och skriva ut 200 binära siffror, spridda över 5 kolumner. Den nuvarande systemanvändarens namn fångas och manipuleras sedan för att skrivas ut som en del av "wake up" -sekvensen. Vi anger sedan en FOR -slinga, som vi vet att vi bara kommer att iterera över 4 gånger på grund av "1 Till 4 "begränsning. Vi SELECT sedan på vår loop -variabel (loopA), som matchar den första CASE -satsen första gången, den andra CASE -satsen andra gången genom loop, etc. Varje iteration av loop, myString är inställd på rätt strängrepresentation av det ord vi vill skriva ut, och nyckelsubrutinen kallas för att faktiskt skriva ut. Det finns uppenbarligen många andra sätt att designa den här slingan, och jag lämnar det som en övning till läsaren. När vi lämnar FOR -slingan ringer vi återigen matrisen subrutin för att skriva ut fler nummer. Som kommentaren i koden säger, kan du lägga detta sista samtalet till matris () i en loop om du vill, eller så kan du bara ringa det med ett större nummer, etc. Slutligen, vårt samtal att avsluta () avbryter programmet utförande (alltid god praxis: P). Hoppas att alla har roligt att ta mitt exempel och göra det bättre! Om denna instruktör har väckt din nyfikenhet med VB, kan Google tillhandahålla massor av bra resurser för att lära dig mer om det än jag kan berätta för dig. Glad kodning! martin

Rekommenderad: