Table des matières:

Code matriciel - Visual Basic : 7 étapes
Code matriciel - Visual Basic : 7 étapes

Vidéo: Code matriciel - Visual Basic : 7 étapes

Vidéo: Code matriciel - Visual Basic : 7 étapes
Vidéo: Puissance matricielle sous Excel 2024, Juillet
Anonim
Code matriciel - Visual Basic
Code matriciel - Visual Basic

Le nouveau code Visual Basic amélioré affichera un effet de type « Matrice », avec un défilement des uns et des zéros. Il passe ensuite à la séquence Matrix "Wake Up Neo", puis continue de faire défiler les numéros. Je me rends compte que ce n'est pas exactement la façon dont la séquence se déroule dans le film, mais il y avait des gens qui demandaient cette fonctionnalité, alors je l'ai ajoutée. Je pense que la façon dont je randomise l'affichage des colonnes des uns et des zéros est la partie la plus soignée du code. Je discute exactement de ce que j'ai fait plus tard. Ce Instructable est en réponse à l'Instructable « Bienvenue dans la matrice dans l'invite de commande » de Brennn10. Le code qui compose cet Instructable était initialement basé sur le code publié dans un commentaire de DarkJoker sur l'Instructable ci-dessus. posté cette solution.

Étape 1: saisissez mon code

J'ai joint mon code ci-dessous. Enregistrez les deux fichiers (startMatrix.itsabat et matrix.itsavbs) dans le même dossier sur votre machine et supprimez la partie "itsa" du nom de fichier, c'est-à-dire renommez les fichiers en startMatrix.bat et matrix.vbs. Les fichiers Bat et les fichiers vbs sont exécutables et je ne peux donc pas les télécharger avec ces extensions ici. C'est pourquoi vous devez les enregistrer et les renommer localement.

Étape 2: Exécuter le code

Si vous souhaitez exécuter mon code, suivez les instructions ci-dessous. Si vous ne voulez pas exécuter quelque chose sur votre machine dont vous ne savez rien, vous êtes intelligent. Vous devriez passer à l'étape suivante, où je parcoure le code et vous montre que je n'ai rien fait de sournois. Cependant, si vous voulez juste y accéder (ou si vous êtes sur la machine de quelqu'un d'autre et ne care), voici comment lancer le code: Etape 1: double-cliquez sur "startMatrix.bat". C'est tout. Passez maintenant à l'étape suivante pour en savoir plus sur la fraîcheur que vous venez de voir.

Étape 3: Comprendre le Code, Partie 1

Jetons un coup d'œil au code, en commençant par le début. J'espère que vous pourrez en apprendre assez sur VB à partir de mon code pour que vous puissiez apprendre à coder en VB mieux que moi:) Alors tout d'abord, nous avons 2 fichiers: un fichier bat et un fichier vbs. Si vous modifiez le fichier bat, vous remarquerez qu'il exécute le fichier vbs, après avoir configuré la fenêtre, la couleur du texte et le titre de la fenêtre. Passons aux éléments les plus intéressants du fichier vbs. Pour info, je ne vais aborder ici que les lignes de code les plus intéressantes. En outre, faites particulièrement attention aux lignes commençant par un ' (coche ou guillemet simple). Ce sont des commentaires et NE SERONT PAS EXÉCUTÉS. Les premières lignes de matrix.vbs disent « Définir mes messages d'erreur au niveau explicite » mais en même temps « Ne laissez aucune erreur que j'ai commise être fatale ». Aucune discussion réelle n'est nécessaire. Ligne 5: Notre instruction dim configure ici toutes les variables que nous utiliserons tout au long de la vie de notre petit programme. Nous n'avons pas besoin de déclarer des types pour ces variables, ou des valeurs initiales pour elles, comme nous le pourrions dans d'autres langages. VB est "puissant" comme ça. Ligne 12: objSysInfo nous permet de rassembler des informations sur le système sur lequel nous tournons. Nous créons l'objet ici, et à la ligne 13, objSysInfo. UserName renvoie le nom de l'utilisateur actuellement connecté qui exécute ce code. Cela sera utilisé plus tard à la place de "Neo", afin que notre script puisse dire "Réveillez-vous, Martin…" s'il est exécuté sur ma machine, ou "Réveillez-vous, Brennn10…" s'il est exécuté sur la machine de Brennn10 et si c'était son nom d'utilisateur. L'utilisation du nom d'utilisateur du système vous permet de le lancer sur la machine déverrouillée de votre ami et il tirera son nom automatiquement, sans avoir à modifier le code. Passons à autre chose.

Étape 4: Comprendre le Code, Partie 2

Ligne 16: sub waitfor est notre premier sous-programme. Un sous-programme peut être appelé à partir d'un endroit différent dans le code, exécutera le code dans le corps du sous-programme, puis renverra le contrôle du programme au code appelant. waitfor configure notre shell pour nous. En faisant cela dans une boucle avec un "sommeil" dans la boucle, nous permettons à l'activation du shell de se terminer avant que le contrôle ne soit renvoyé, ce qui est une très bonne chose. Ligne 26: la sous-matrice est notre deuxième sous-programme et prend une paramètre appelé "éléments". Ce sous-programme imprime les chiffres sympas qui semblent "tomber", comme dans le film. J'ai pris certaines choses pour acquises ici. J'espère qu'en les expliquant, vous comprendrez d'où je viens et pourrez le faire mieux que moi. Tout d'abord, je suppose que vous ne voulez que 5 colonnes de nombres, et que "éléments" est divisible par le nombre de colonnes (5). C'était facile à garantir car plus tard, je déclare que les paramètres passés à "matrice" sont 200 et 100 (il est appelé deux fois). Je suppose également que vous voulez que les 5 colonnes soient activées par défaut. Je pense que ça a l'air OK, mais vous pouvez changer quelques-uns d'entre eux en FAUX si vous voulez que la première ligne de nombres semble aussi aléatoire que le reste des lignes. OK, nous avons donc 5 colonnes, nous avons 200 / 5 = 40 lignes de nombres à afficher (linesToWrite), et toutes nos colonnes sont activées par défaut. Ligne 41: nous entrons dans deux boucles "for", dont la première (Loop A) parcourt nos linesToWrite et la seconde (Loop B) qui parcourt le nombre de colonnes. Dans la boucle B, nous sélectionnons sur la valeur de la variable de boucle loopB, et en fonction de sa valeur, nous évaluons une instruction If-Else. Si la colonne en question est Enabled ("TRUE", ou "turned"), nous imprimerons, via "wshshell. SendKeys", la valeur de Int(Round(rnd())), suivie d'une tabulation. Sinon, nous n'imprimerons qu'un onglet, de sorte que la colonne apparaisse vide. Alors, quelle est la valeur de Int(Round(rnd())) ? rnd() renvoie un nombre à virgule flottante aléatoire entre 0,0 et 1,0, Round() prendra cette valeur et l'arrondira à la valeur entière la plus proche, et Int() convertit le résultat en un entier. Cette dernière étape pourrait être considérée comme excessive, puisque l'appel Round() devrait nous donner 0 ou 1. Je l'ai fait juste par habitude. À un moment donné, quelqu'un a dû me dire que c'était plus sûr, et je ne l'ai apparemment pas encore oublié. Passons à la partie 3…

Étape 5: Comprendre le Code, Partie 3

Poursuivant la sous-matrice, voici les quelques lignes suivantes de VB…' Cette colonne bascule, ' donc si une colonne est éteinte, elle sera allumée 30 pour cent du temps, ' et si une colonne est allumée, elle le sera éteint 30 pour cent du temps. turnOffMax = 0,30 turnOnMax = 0,30 Basculer chaque colonne 30% du temps fait "tomber" les colonnes de nombres de manière aléatoire similaire à la façon dont elles le font dans le film. Pas exact, mais proche. ' Bascule colonne 1 flipMe = rnd() If ((col1 = TurnOn) et (flipMe < turnOffMax)) Then col1 = TurnOff Else If ((col1 = TurnOff) and (flipMe < turnOnMax)) Then col1 = TurnOn End IfThe Le bloc ci-dessus gère la façon dont nous déterminons si nous allons afficher un nombre dans la colonne donnée lors de la prochaine itération, pour la prochaine ligne de nombres. Le code indique "si la colonne est allumée et que le nombre aléatoire appelé flipMe est inférieur à 30%, éteignez la colonne. Sinon, si la colonne est éteinte et que flipMe est inférieur à 30%, allumez la colonne". sous Matrix. Sur la sous-touche…

Étape 6: Sous-clé()

La méthode clé est ci-dessous.sub key(msg)' imprime les messages "la matrice" et les efface wscript.sleep 1500length = len(msg)for 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 subCette méthode imprime une chaîne "msg". Il imprimera tout ce que vous passerez. Cette méthode est appelée plus tard dans le code. La première boucle FOR imprime chaque caractère de la chaîne, un à la fois, et marque une pause de 250 millisecondes entre chaque caractère. Nous dormons ensuite 3000 millis (3 secondes) et écrivons un retour arrière pour chaque caractère que nous avons précédemment imprimé, dormant cette fois un peu moins. C'est tout ce qu'il y a à faire. Passons au corps principal du programme, où tout se réunit.

Étape 7: Principal

L'exécution principale du programme appelle waitFor et matrix (que nous avons déjà couvert) pour tout configurer et écrire 200 chiffres binaires, répartis sur 5 colonnes. Le nom de l'utilisateur système actuel est ensuite saisi et manipulé pour être imprimé dans le cadre de la séquence de "réveil". À 4" contrainte. Nous sélectionnons ensuite sur notre variable de boucle (loopA), qui correspond à la première instruction CASE la première fois, la deuxième instruction CASE la deuxième fois à travers la boucle, etc. À chaque itération de la boucle, myString est défini sur la représentation de chaîne correcte de le verbiage que nous voulons imprimer, et la sous-routine clé est appelée pour réellement faire l'impression. Il existe évidemment de nombreuses autres façons de concevoir cette boucle, et je laisserai cela en exercice au lecteur. Une fois que nous avons quitté la boucle FOR, nous appelons à nouveau le sous-programme matriciel pour imprimer plus de nombres. Comme le dit le commentaire dans le code, vous pouvez mettre cet appel final à matrix() dans une boucle si vous le souhaitez, ou vous pouvez simplement l'appeler avec un plus grand nombre, etc. Enfin, notre appel à quit() interrompt le programme exécution (toujours une bonne pratique:P). J'espère que tout le monde s'amusera à prendre mon exemple et à l'améliorer ! Si ce Instructable a piqué votre curiosité avec VB, Google peut fournir une tonne de bonnes ressources pour en savoir plus à ce sujet que je ne peux vous le dire. Bon codage ! Martin

Conseillé: