Matrix Code - Visual Basic (4 / 7 steg)
Steg 4: Förstå koden, del 2
Linje 16: sub waitfor är vår första subrutin. En subrutin kan anropas från ett annat ställe i koden, kommer att köra kod i texten i subrutinen och kommer då att returnera programmet kontroll till den anropande koden. waitfor sätter upp våra skal för oss. Genom att göra detta i en loop med en "sömn" inom slingan tillåta vi aktivering av skalet att slutföra innan kontroll som returneras, vilket är mycket bra.Rad 26: sub matris är vår andra subrutin och tar en parameter som kallas "element". Denna subrutin gör utskrift av cool siffrorna som visas "falla", som i filmen.
Jag har tagit några saker för givet här. Förhoppningsvis genom att förklara dem förstår du var jag kommer ifrån och kan göra det bättre än jag.
Först antar, jag att du bara vill ha 5 sifferkolumner, och att "element" är delbart med antal kolumner (5). Detta var lätt att garantera eftersom senare förklarar jag de parametrar som skickas till "matrix" vara 200 och 100 (det kallas två gånger).
Jag antar också att du vill att alla 5 kolumner aktiverad som standard. Jag tror att det ser OK, men du kan ändra några av dessa till FALSE om du ville ha den första raden av nummer som verkar så slumpmässigt eftersom resten av raderna kommer att vara.
OK, så vi har 5 kolumner, vi har 200 / 5 = 40 rader av nummer till display (linesToWrite), och alla våra kolumner är aktiverad som standard.
Linje 41: vi går in i två "för" loopar, först av vilka (Loop A) cykler genom vår linesToWrite och den andra (Loop B) som växlar mellan antalet kolumner. I slinga B, väljer vi på värdet av loop variabel loopB och beroende det värdet vi utvärdera en If-Else-sats. Om kolumnen i fråga är aktiverad ("TRUE" eller "påslagen"), vi kommer att skriva ut, via "wshshell. SendKeys", värdet av Int(Round(rnd())), följt av en tab. annars, vi ska skriva ut endast en flik, så att kolumnen visas tom.
Så vad är värdet av Int(Round(rnd()))? RND() returnerar ett flytande punkt slumptal mellan 0.0 och 1.0, Round () kommer att ta detta värde och runda av det till närmaste heltal och Int() kastar resultatet till ett heltal. Detta sista steg kan anses vara overkill, eftersom anropet Round () bör ge oss 0 eller 1. Jag gjorde det bara på grund av vana. Vid något tillfälle måste någon har berättat för mig att det var säkrare, och jag tydligen har inte glömt det ännu.
Vidare del 3...