Paso 4: Comprender el código, parte 2
Línea 16: sub waitfor es nuestra primera subrutina. Una subrutina puede llamarse desde un lugar diferente en el código se ejecutará el código dentro del cuerpo de la subrutina y luego volverá el programa de control para el código de llamada. WAITFOR configura nuestra shell para nosotros. Haciendo esto en un bucle con un "sueño" dentro del bucle, nos permiten la activación de la cáscara para completar antes de control se devuelve, que es una cosa muy buena.Línea 26: matriz sub es nuestra segunda subrutina y toma un parámetro llamado "elementos". Esta subrutina hace la impresión de los números cool que parecen "caer", como en la película.
He hecho algunas cosas por aquí. Esperemos que por explicarlas a entender donde estoy viniendo y puede hacerlo mejor que yo.
En primer lugar, supongo que sólo desea 5 columnas de números, y que "elementos" son divisibles por el número de columnas (5). Esto era fácil de garantizar porque más tarde declaro los parámetros pasados a la "matriz" de 200 y 100 (se llama dos veces).
También supongo que quieres todas las 5 columnas activadas por defecto. Creo que se ve OK, pero puede cambiar algunos de estos en FALSE si desea la primera línea de números que parecen tan aleatorio como el resto de las filas.
OK, así que tenemos 5 columnas, tenemos 200 / 5 = 40 líneas de números (linesToWrite), y todas nuestras columnas están activadas por defecto.
Línea 41: entramos en dos "por" lazos, la primera de las cuales ciclos (ciclo A) a través de nuestro linesToWrite y la segunda (circuito B) que los ciclos a través del número de columnas. En el circuito B, seleccionamos en el valor de la loopB variable de bucle, y dependiendo de su valor evaluamos una instrucción If-Else. Si la columna en cuestión está activada ("TRUE" o "encendido"), vamos a imprimir, a través de "wshshell. SendKeys", el valor de Int(Round(rnd())), seguido de una tabla de otra manera, te imprimimos sólo una ficha, tal que la columna aparece vacía.
¿Cuál es el valor de Int(Round(rnd()))? RND() devuelve un número de punto flotante aleatorio entre 0.0 y 1.0, Round() tomará ese valor y redondear al valor entero más cercano y Int() convierte el resultado a un entero. Este último paso podría considerarse excesivo, puesto que la llamada Round() debería darnos 0 o 1. Lo hice sólo por hábito. En algún momento alguien debe me han dicho que era más seguro, y al parecer no he olvidado todavía.
A parte 3...