Съдържание:

Матричен код - Visual Basic: 7 стъпки
Матричен код - Visual Basic: 7 стъпки

Видео: Матричен код - Visual Basic: 7 стъпки

Видео: Матричен код - Visual Basic: 7 стъпки
Видео: Learn Visual Studio Code in 7min (Official Beginner Tutorial) 2024, Юли
Anonim
Матричен код - Visual Basic
Матричен код - Visual Basic

Новият и подобрен код на Visual Basic ще показва ефект, подобен на "Matrix", с превъртане на One и Zero. След това той преминава към последователността на матрицата "Wake Up Neo" и след това продължава да превърта числата. Осъзнавам, че това не е точно начина, по който последователността преминава във филма, но имаше хора, които искаха тази функционалност, затова я добавих. Мисля, че начинът, по който рандомизирам показването на колоните на One и Zero, е най -чистата част от кода. Обсъждам точно това, което направих по -късно. Този Instructable е в отговор на инструкцията на Brennn10 „Добре дошли в матрицата в командния ред“. Кодът, който съставлява този Instructable, се основава първоначално на код, публикуван в коментар от DarkJoker за горната Instructable, Умишлено бях доста изрично обяснен за кода, тъй като получих доста искания за разяснения, откакто за първи път публикува това решение.

Стъпка 1: Вземете моя код

Прикачих кода си по -долу. Запазете двата файла (startMatrix.itsabat и matrix.itsavbs) в една и съща папка на вашето устройство и премахнете частта "itsa" от името на файла, т.е.преименувайте файловете на startMatrix.bat и matrix.vbs. Bat файловете и vbs файловете са изпълними и затова не мога да ги кача с тези разширения тук. Ето защо трябва да ги запишете и преименувате локално.

Стъпка 2: Изпълнение на кода

Ако искате да стартирате моя код, следвайте инструкциите по -долу. Ако не искате да изпълнявате нещо на вашата машина, за което не знаете нищо, вие сте умен. Трябва да преминете към следващата стъпка, където ще разгледам кода и ще ви покажа, че не съм направил нищо подло, но ако просто искате да стигнете до него (или сте на чужда машина и не грижа), ето как да стартирате кода: Стъпка 1: щракнете двукратно върху "startMatrix.bat". Това е всичко. Сега преминете към следващата стъпка, за да прочетете за прохладата, която току -що видяхте.

Стъпка 3: Разбиране на кодекса, част 1

Нека да разгледаме кода, започвайки от началото. Надявам се, че можете да научите достатъчно за VB от моя код, че ще излезете и ще научите как да кодирате във VB по -добре от мен:) Така че първо, имаме две файлове: bat файл и vbs файл. Ако редактирате bat файла, ще забележите, че той изпълнява vbs файла, след като настроите прозореца, цвета на текста и заглавието на прозореца. Нека да преминем към по -интересните неща във файла vbs. FYI, ще се докосна само до най -интересните редове код тук. Също така обърнете специално внимание на редовете, започващи с „(отметка или единичен кавичка). Това са коментари и НЯМА ДА БЪДАТ ИЗПЪЛНЕНИ. Първите няколко реда на matrix.vbs казват „Задайте моите съобщения за грешки на изричното ниво“, но в същото време „Не позволявайте на моите грешки да бъдат фатални“. Ред 5: Нашето неясно изявление тук задава всички променливи, които ще използваме през целия живот на нашата малка програма. Не е нужно да декларираме типове за тези променливи или първоначални стойности за тях, както бихме могли в някои други езици. VB е "мощен" по този начин. Ред 12: objSysInfo ни позволява да съберем малко информация за системата, на която работим. Ние създаваме обекта тук и на ред 13, objSysInfo. UserName връща името на текущо влезлия потребител, който изпълнява този код. Това ще бъде използвано по -късно вместо "Neo", така че нашият скрипт да може да каже "Събуди се, Мартин …", ако се изпълнява на моята машина, или "Събуди се, Brennn10 …", ако се изпълнява на машината на Brennn10 и ако това е неговото потребителско име. Използването на потребителското име на системата ви позволява да го хвърлите на отключената машина на приятеля си и то автоматично ще изтегли името му, без да се налага да променя кода. Да продължим.

Стъпка 4: Разбиране на кодекса, част 2

Ред 16: sub waitfor е първата ни подпрограма. Подпрограма може да бъде извикана от различно място в кода, ще изпълни кода в тялото на подпрограмата и след това ще върне управлението на програмата към извикващия код. waitfor настройва нашата черупка вместо нас. Правейки това в цикъл със "заспиване" в рамките на цикъла, ние позволяваме активирането на черупката да завърши преди връщането на контрола, което е много добро нещо. Ред 26: подматрицата е втората ни подпрограма и отнема параметър, наречен "елементи". Тази подпрограма прави отпечатването на готините числа, които изглежда "падат", както във филма. Тук взех няколко неща за даденост. Надявам се, че като им обясните, ще разберете откъде идвам и можете да го направите по -добре от мен. Първо, предполагам, че искате само 5 колони с числа и че "елементите" се делят на броя колони (5). Това беше лесно да се гарантира, защото по -късно декларирам, че параметрите, предадени на „матрица“, са 200 и 100 (нарича се два пъти). Предполагам също, че искате всички 5 колони да бъдат включени по подразбиране. Мисля, че изглежда добре, но можете да промените няколко от тях на FALSE, ако искате първият ред от числа да изглежда толкова случаен, колкото и останалите редове. Добре, така че имаме 5 колони, имаме 200 / 5 = 40 реда с числа за показване (linesToWrite) и всичките ни колони са включени по подразбиране. Ред 41: влизаме в два цикъла "за", първият от които (цикъл А) циклира през нашите линииToWrite и вторият (Цикъл B), който циклично преминава през броя на колоните. В цикъл B избираме стойността на променливата на цикъла loopB и в зависимост от нейната стойност оценяваме оператор If-Else. Ако въпросната колона е активирана ("TRUE" или "включена"), ние ще отпечатаме чрез "wshshell. SendKeys" стойността на Int (Round (rnd ())), последвана от раздел. В противен случай ще отпечатаме само раздел, така че колоната да изглежда празна. И така, каква е стойността на Int (Round (rnd ()))? rnd () връща произволно число с плаваща запетая между 0.0 и 1.0, Round () ще вземе тази стойност и ще я закръгли до най -близката стойност Integer, а Int () прехвърля резултата на Integer. Тази последна стъпка може да се счита за прекалена, тъй като извикването Round () трябва да ни даде 0 или 1. Направих го само поради навик. В един момент някой трябва да ми е казал, че е по -безопасно и явно още не съм го забравил.

Стъпка 5: Разбиране на кодекса, част 3

Продължавайки подматрицата, ето следващите няколко реда на VB … „Това колони с джапанки“, така че ако колоната е ИЗКЛЮЧЕНА, тя ще бъде ВКЛЮЧЕНА 30 процента от времето, и ако колоната е ВКЛЮЧЕНА, тя ще бъде изключен 30 процента от времето. turnOffMax = 0,30 turnOnMax = 0,30 Превключването на всяка колона в 30% от времето кара колоните с числа да "падат" по случаен начин, подобно на това, което правят във филма. Не точно, но близо. 'Колона 1 джапанка flipMe = rnd () If ((col1 = turnOn) и (flipMe <turnOffMax)) Тогава col1 = turnOff Else If ((col1 = turnOff) и (flipMe <turnOnMax)) Тогава col1 = обърна OnFon IfThe горният блок обработва как определяме дали ще покажем число в дадената колона по време на следващата итерация, за следващия ред от числа. Кодът гласи "ако колоната е включена и случайното число, наречено flipMe е по -малко от 30%, изключете колоната. В противен случай, ако колоната е изключена и flipMe е по -малко от 30%, включете колоната." нагоре подматрица. Към под ключ…

Стъпка 6: Под ключ ()

Методът на ключа е по -долу. Sub key (msg) 'правите разпечатки на съобщенията "матрицата" и ги изтривайтеwsws.sleep 1500length = len (msg) за позиция = 1 до дължина wshshell. SendKeys в средата (msg, position, 1) wscript.sleep 250nextwscript.sleep 3000 for position = 1 to length wshshell. SendKeys "{BACKSPACE}" wscript.sleep 75nextend subТози метод отпечатва низ "msg". Той ще отпечата всичко, което предадете. Този метод се извиква по -късно в кода. Първият цикъл FOR отпечатва всеки символ в низ, един по един, и прави пауза за 250 милисекунди между всеки знак. След това спим за 3000 милиса (3 секунди) и изписваме обратно пространство за всеки отпечатан преди нас знак, като този път спим малко по -малко. Това е всичко. Към основната част на програмата, където всичко се събира.

Стъпка 7: Основна

Основното изпълнение на програмата изисква waitFor и матрица (която вече разгледахме), за да настроите всичко и да изпишете 200 двоични цифри, разпределени в 5 колони. След това името на текущия системен потребител се грабва и манипулира, за да бъде отпечатано като част от последователността "събуждане". След това влизаме в цикъл FOR, който знаем, че ще повторим само 4 пъти поради "1 До 4 "ограничение. След това избираме нашата променлива на цикъла (loopA), която съвпада с първия оператор CASE за първи път, втория оператор CASE за втори път през цикъла и т.н. Всяка итерация на цикъла, myString е зададена на правилното низово представяне на многословието, което искаме да отпечатаме, и ключовата подпрограма се извиква да извърши действително отпечатването. Очевидно има много други начини за проектиране на този цикъл и ще го оставя като упражнение на читателя. След като излезем от цикъла FOR, отново извикваме матричната подпрограма, за да отпечатаме повече числа. Както се казва в коментара в кода, можете да поставите това последно извикване на matrix () в цикъл, ако искате, или просто можете да го извикате с по -голям номер и т.н. изпълнение (винаги добра практика: P). Надявам се всички да се забавляват, като вземат моя пример и го правят по -добър! Ако този Instructable предизвика любопитството ви с VB, Google може да предостави много добри ресурси, за да научи повече за него, отколкото мога да ви кажа. Честито кодиране! мартин

Препоръчано: