Tabla de contenido:

Código de matriz - Visual Basic: 7 pasos
Código de matriz - Visual Basic: 7 pasos

Video: Código de matriz - Visual Basic: 7 pasos

Video: Código de matriz - Visual Basic: 7 pasos
Video: Arrays (Arreglos) Vectores (17-25) Programación Visual Basic. Net con Visual Studio 2013 2024, Mes de julio
Anonim
Código de matriz - Visual Basic
Código de matriz - Visual Basic

El código de Visual Basic nuevo y mejorado mostrará un efecto similar a una "Matriz", con desplazamiento de Uno y Cero. Luego corta a la secuencia Matrix "Wake Up Neo", y luego continúa desplazándose por los números. Me doy cuenta de que no es exactamente así como va la secuencia dentro de la película, pero había personas que solicitaban esta funcionalidad, así que la agregué. Creo que la forma en que aleatorizo la visualización de las columnas de Uno y Cero es la parte más ordenada del código. Discuto exactamente lo que hice más tarde. Este Instructable es en respuesta al Instructable "Welcome to the Matrix in Command Prompt" de Brennn10. El código que compone este Instructable se basó inicialmente en el código publicado en un comentario de DarkJoker sobre el Instructable anterior He sido intencionalmente bastante explícito con mi explicación del código ya que he recibido bastantes solicitudes de aclaración desde la primera vez publicó esta solución.

Paso 1: Toma mi código

Adjunto mi código a continuación. Guarde ambos archivos (startMatrix.itsabat y matrix.itsavbs) dentro de la misma carpeta en su máquina y elimine la parte "itsa" del nombre del archivo, es decir, cambie el nombre de los archivos a startMatrix.bat y matrix.vbs. Los archivos bat y los archivos vbs son ejecutables y, por lo tanto, no puedo cargarlos con esas extensiones aquí. Es por eso que debe guardarlos y cambiarles el nombre localmente.

Paso 2: ejecutar el código

Si desea ejecutar mi código, siga las instrucciones a continuación. Si no quiere ejecutar algo en su máquina de lo que no sabe nada, es inteligente. Deberías continuar con el siguiente paso, donde reviso el código y te muestro que no he hecho nada tortuoso. Sin embargo, si solo quieres llegar a él (o estás en la máquina de otra persona y no lo haces) care), aquí se explica cómo iniciar el código: Paso 1: haga doble clic en "startMatrix.bat". Ahora continúe con el siguiente paso para leer sobre la frescura que acaba de ver.

Paso 3: comprensión del código, parte 1

Echemos un vistazo al código, comenzando desde el principio. Espero que pueda aprender lo suficiente sobre VB de mi código que se irá y aprenderá a codificar en VB mejor que yo:) Así que lo primero es lo primero, tenemos 2 archivos: un archivo bat y un archivo vbs. Si edita el archivo bat, notará que ejecuta el archivo vbs, después de configurar la ventana, el color del texto y el título de la ventana. Pasemos a las cosas más interesantes en el archivo vbs. Para su información, solo voy a tocar las líneas de código más interesantes aquí.. Estos son comentarios y NO SERÁN EJECUTADOS. Las primeras líneas de matrix.vbs dicen "Establezca mis mensajes de error en el nivel explícito" pero al mismo tiempo "No permita que los errores que cometí sean fatales". No se necesita una discusión real. Línea 5: Nuestra declaración tenue aquí establece todas las variables que usaremos a lo largo de la vida de nuestro pequeño programa. No necesitamos declarar tipos para estas variables, o valores iniciales para ellas, como lo haríamos en otros lenguajes. VB es "poderoso" así. La línea 12: objSysInfo nos permite recopilar información sobre el sistema en el que estamos ejecutando. Creamos el objeto aquí, y en la Línea 13, objSysInfo. UserName devuelve el nombre del usuario actualmente conectado que está ejecutando este código. Esto se usará más adelante en lugar de "Neo", de modo que nuestro script pueda decir "Wake up, Martin …" si se está ejecutando en mi máquina, o "Wake up, Brennn10 …" si se está ejecutando en la máquina de Brennn10 y si ese era su nombre de usuario. Usar el nombre de usuario del sistema le permite lanzarlo en la máquina desbloqueada de su amigo y extraerá su nombre automáticamente, sin tener que alterar el código. Sigamos adelante.

Paso 4: comprensión del código, parte 2

Línea 16: sub waitfor es nuestra primera subrutina. Se puede llamar a una subrutina desde un lugar diferente en el código, ejecutará el código dentro del cuerpo de la subrutina y luego devolverá el control del programa al código de llamada. waitfor prepara nuestro caparazón para nosotros. Al hacer esto en un ciclo con un "sueño" dentro del ciclo, permitimos que la activación del shell se complete antes de que se devuelva el control, lo cual es algo muy bueno. Línea 26: submatriz es nuestra segunda subrutina, y toma un parámetro llamado "elementos". Esta subrutina imprime los números geniales que parecen "caer", como en la película. He dado algunas cosas por sentado aquí. Con suerte, al explicarlos comprenderá de dónde vengo y podrá hacerlo mejor que yo. En primer lugar, supongo que solo desea 5 columnas de números y que los "elementos" son divisibles por el número de columnas (5). Esto fue fácil de garantizar porque luego declaro que los parámetros pasados a "matriz" son 200 y 100 (se llama dos veces). También asumo que quieres que las 5 columnas estén activadas por defecto. Creo que se ve bien, pero podrías cambiar algunos de estos a FALSE si quisieras que la primera línea de números parezca tan aleatoria como el resto de las filas. OK, entonces tenemos 5 columnas, tenemos 200 / 5 = 40 líneas de números para mostrar (linesToWrite), y todas nuestras columnas están activadas por defecto. Línea 41: ingresamos en dos bucles "for", el primero de los cuales (Bucle A) recorre nuestras linesToWrite y el segundo (Bucle B) que recorre el número de columnas. En el Loop B, seleccionamos el valor de la variable de loop loopB, y dependiendo de su valor evaluamos una instrucción If-Else. Si la columna en cuestión está habilitada ("TRUE", o "activada"), imprimiremos, a través de "wshshell. SendKeys", el valor de Int (Round (rnd ())), seguido de una pestaña. De lo contrario, imprimiremos solo una pestaña, de modo que la columna aparezca vacía. Entonces, ¿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 lo redondeará al valor Integer más cercano, e Int () arroja el resultado a un Integer. Este último paso podría considerarse una exageración, ya que la llamada a Round () debería darnos 0 o 1. Lo hice solo por costumbre. En algún momento alguien debió haberme dicho que era más seguro, y aparentemente no lo he olvidado todavía. Vamos a la Parte 3 …

Paso 5: Comprensión del código, parte 3

Continuando con la submatriz, aquí están las siguientes líneas de VB … 'Esto cambia las columnas', por lo que si una columna está APAGADA, se encenderá el 30 por ciento del tiempo 'y si una columna está ENCENDIDA, será APAGADO el 30 por ciento del tiempo. turnOffMax = 0.30 turnOnMax = 0.30 Cambiar cada columna el 30% del tiempo hace que las columnas numéricas "caigan" de una manera aleatoria similar a como lo hacen en la película. No exacto, pero cercano. 'Columna 1 flip-flop flipMe = rnd () If ((col1 = turnOn) y (flipMe <turnOffMax)) Entonces col1 = turnOff Else If ((col1 = turnOff) y (flipMe <turnOnMax)) Entonces col1 = turnOn End IfThe El bloque anterior maneja cómo determinamos si mostraremos un número en la columna dada durante la siguiente iteración, para la siguiente fila de números. El código dice "si la columna está activada y el número aleatorio llamado flipMe es inferior al 30%, apague la columna. De lo contrario, si la columna está apagada y flipMe es inferior al 30%, encienda la columna". hasta sub Matriz. Activado para subclave …

Paso 6: Subclave ()

El método clave está debajo. Sub key (msg) 'hacer impresiones de los mensajes de "la matriz" y borrarlos wscript.sleep 1500length = len (msg) para position = 1 to length wshshell. SendKeys mid (msg, position, 1) wscript.sleep 250nextwscript.sleep 3000for position = 1 to length wshshell. SendKeys "{BACKSPACE}" wscript.sleep 75nextend sub Este método imprime una cadena "msg". Imprimirá todo lo que le pase. Este método se llama más adelante en el código. El primer ciclo FOR imprime cada carácter de la cadena, uno a la vez, y hace una pausa de 250 milisegundos entre cada carácter. Luego dormimos 3000 milis (3 segundos) y escribimos un retroceso para cada carácter que imprimimos anteriormente, durmiendo esta vez un poco menos. En el cuerpo principal del programa, donde todo se junta.

Paso 7: Principal

La ejecución principal del programa llama a waitFor y matrix (que ya hemos cubierto) para configurar todo y escribir 200 dígitos binarios, repartidos en 5 columnas. El nombre del usuario actual del sistema se toma y se manipula para imprimirlo como parte de la secuencia de "despertar". Luego ingresamos un bucle FOR, que sabemos que solo iteraremos 4 veces debido al "1 Restricción de 4 ". Luego SELECCIONAMOS en nuestra variable de bucle (bucleA), que coincide con la primera declaración CASE la primera vez, la segunda declaración CASE la segunda vez en el bucle, etc. Cada iteración del bucle, myString se establece en la representación de cadena correcta de la verborrea que queremos imprimir, y la subrutina clave se llama para hacer la impresión. Obviamente, hay muchas otras formas de diseñar este ciclo, y lo dejo como un ejercicio para el lector. Una vez que salimos del ciclo FOR, una vez más llamamos a la subrutina de la matriz para imprimir más números. Como dice el comentario en el código, puede poner esta llamada final a matrix () en un bucle si lo desea, o simplemente puede llamarlo con un número mayor, etc. Finalmente, nuestra llamada a quit () aborta el programa ejecución (siempre buena práctica: P). ¡Espero que todos se diviertan tomando mi ejemplo y haciéndolo mejor! Si este Instructable ha despertado su curiosidad con VB, Google puede proporcionar una tonelada de buenos recursos para aprender más sobre él de lo que puedo decirle. ¡Feliz codificación! martín

Recomendado: