Мазмуну:

Matrix Code - Visual Basic: 7 кадам
Matrix Code - Visual Basic: 7 кадам

Video: Matrix Code - Visual Basic: 7 кадам

Video: Matrix Code - Visual Basic: 7 кадам
Video: Visual Basic Programing Variable, Constants, Arrays, Operators - Visual Basic 2024, Июль
Anonim
Matrix Code - Visual Basic
Matrix Code - Visual Basic

Жаңы жана жакшыртылган Visual Basic коду "Матрицага" окшош эффектти көрсөтөт, бири менен "Нөлдөрүн" жылдыруу. Ал матрицанын "Wake Up Neo" тизмегине чейин кыскарат, андан кийин сандарды жылдырууну улантат. Бул тасманын ичиндеги ырааттуулук так эмес экенин түшүнөм, бирок бул функцияны сураган адамдар болгон, ошондуктан мен аны кошуп койгом. Менин оюмча, One жана Zero тилкелеринин дисплейин рандомизациялоо - бул коддун эң тыкан бөлүгү. Мен эмне кылганымды кийинчерээк талкуулайм. Бул Нускоочу Brennn10дун "Командалык сапта матрицага кош келиңиз" инструкциясына жооп катары. Бул көрсөтмөнү түзүүчү код башында DarkJoker тарабынан жогорудагы Instructable боюнча комментарийде жазылган кодго негизделген. бул чечимди жарыялады.

1 -кадам: Менин кодумду алыңыз

Мен кодумду төмөндө тиркеп койдум. Эки файлды (startMatrix.itsabat жана matrix.itsavbs) машинаңыздагы бир папкада сактаңыз жана файлдын "itsa" бөлүгүн алып салыңыз, б.а. файлдардын атын startMatrix.bat жана matrix.vbs деп өзгөртүңүз. Бат файлдары жана vbs файлдары аткарылуучу, ошондуктан мен аларды бул кеңейтүүлөр менен бул жерге жүктөй албайм. Ушул себептен улам, сиз аларды сактап, атын жергиликтүү түрдө өзгөртүшүңүз керек.

2 -кадам: Кодексти аткаруу

Эгерде сиз менин кодумду иштеткиңиз келсе, төмөнкү көрсөтмөлөрдү аткарыңыз. Эгерде сиз машинаңызда эч нерсе билбеген нерсени аткаргыңыз келбесе, анда сиз акылдуусуз. Сиз кийинки кадамга өтүшүңүз керек, ал жерде мен кодду аралап, эч нерсе кылбаганымды көрсөтөм. кам), бул жерде кодду кантип баштоо керек: 1-кадам: "startMatrix.bat" дегенди эки жолу чыкылдатыңыз. Эми сиз көргөн салкындыкты окуу үчүн кийинки кадамга өтүңүз.

3 -кадам: Кодексти түшүнүү, 1 -бөлүк

Башынан баштап кодду карап көрөлү. Менин кодумдан VB жөнүндө жетишерлик маалымат ала аласыз жана сиз VBде менден жакшыраак кантип кодироват кылууну үйрөнөсүз)) Ошентип, биринчи кезекте бизде 2 файл бар: бат файл жана vbs файлы. Эгер жарганат файлын түзөтсөңүз, анда ал vbs файлын, терезени, тексттин түсүн жана терезенин аталышын орноткондон кийин аткарарын байкайсыз. Келгиле, vbs файлындагы кызыктуу нерселерге өтөлү. FYI, мен бул жерде эң кызыктуу коддорго гана токтолом. Ошондой эле, 'менен башталган саптарга өзгөчө көңүл буруңуз (кене, же бир цитата). Бул комментарийлер, жана аткарылбайт. Matrix.vbsтин биринчи бир нече саптары "Менин ката билдирүүлөрүмдү ачык деңгээлге коюңуз" деп жазылат, бирок ошол эле учурда "Менин кетирген каталарым өлүмгө алып келбесин." Чыныгы талкуунун кереги жок. 5 -сап: Бул жердеги биздин бүдөмүк билдирүүбүз кичинекей программабыздын өмүрүндө колдоно турган бардык өзгөрмөлөрдү орнотот. Биз бул өзгөрмөлөрдүн түрлөрүн же алар үчүн баштапкы баалуулуктарды жарыялоонун кажети жок, башка тилдердегидей. VB бул сыяктуу "күчтүү". 12 -линия: objSysInfo бизге иштеп жаткан система боюнча кээ бир маалыматтарды чогултууга мүмкүндүк берет. Биз бул жерде объектти түзөбүз жана 13 -сапта objSysInfo. UserName бул кодду аткарып жаткан учурда кирген колдонуучунун атын кайтарат. Бул кийинчерээк "Нео" ордуна колдонулат, ошондуктан биздин Сценарий "Ойгонгула, Мартин …" деп айта алат, эгерде ал менин машинамда иштетилсе, же "Ойгонгула, Бренн10 …" эгер ал Brennn10дун машинасында иштетилсе жана Бул анын колдонуучу аты болгон. Тутумдун колдонуучу атын колдонуу сиздин досуңуздун кулпусу ачылбаган машинасына ыргытууга мүмкүндүк берет жана ал кодду өзгөртпөстөн анын атын автоматтык түрдө тартып алат.

4 -кадам: Кодексти түшүнүү, 2 -бөлүк

16 -сап: sub waitfor - бул биздин биринчи программабыз. Кичи программаны коддун башка жеринен чакырса болот, кодду подпрограмманын ичинде аткарат, андан кийин программаны башкарууну чалуу кодуна кайтарат. күтүүчү биздин кабыгыбызды орнотот. Муну циклдин ичинде "уйку" бар циклде кылуу менен, биз көзөмөлдүн кайтарылганга чейин кабыгынын активдештирилишине уруксат беребиз, бул абдан жакшы нерсе. параметр "элементтери" деп аталат. Бул чакан программа кинодогудай "кулап" кеткендей сонун сандарды басып чыгарат. Мен бул жерде бир нече нерселерди кабыл алдым. Аларды түшүндүрүү менен сиз менин кайдан келгенимди түшүнөсүз жана муну менден жакшыраак жасай аласыз. Биринчиден, мен сизге 5 гана мамыча сандары керек деп ойлойм жана "элементтер" мамычалардын санына бөлүнөт (5). Бул кепилдик берүү оңой эле, анткени кийинчерээк мен "матрицага" өткөн параметрлерди 200 жана 100 деп жарыялайм (бул эки жолу аталат). Мен дагы 5 тилкенин демейки боюнча күйгүзүлүшүн каалайм деп ойлойм. Менин оюмча, бул жакшы көрүнөт, бирок эгер сиз сандардын биринчи сабы башка саптар сыяктуу эле туш келди көрүнгүсү келсе, булардын бир нечесин ЖАЛГАН кылып өзгөртө аласыз. ОК, ошондуктан бизде 5 мамыча бар, бизде 200 5 = 40 сап сандар көрсөтүлүшү керек (linesToWrite), жана биздин мамычалардын бардыгы демейки боюнча күйгүзүлгөн. 41 -сап: биз эки "for" илмекке киребиз, алардын биринчиси (Loop A) биздин линияларыбыз аркылуу циклдерToWrite жана экинчиси (Loop B), ал мамычалардын саны боюнча айланат. Цикл Вде, биз loopB өзгөрмөсүнүн маанисин тандап алабыз жана анын маанисине жараша If-Else билдирүүсүн баалайбыз. Эгерде каралып жаткан мамыча иштетилген болсо ("ЧЫН" же "күйгүзүлгөн"), биз "wshshell. SendKeys" аркылуу Int (Round (rnd ())) маанисин, андан кийин өтмөктү басып чыгарабыз. Болбосо, биз тилкени бош көрүнгөндөй гана өтмөктү басып чыгарабыз. Ошентип Int (Round (rnd ())) мааниси кандай? rnd () 0.0 жана 1.0 ортосунда туш келди өзгөрмөлүү чекиттин санын кайтарат, Round () бул маанини алат жана аны эң жакын Бүтүн санга тегеретет, ал эми Int () жыйынтыгын Бүтүн санга чыгарат. Бул акыркы кадамды ашыкча деп эсептесе болот, анткени Round () чалуусу бизге 0 же 1 бериши керек. Мен муну адатымдын айынан кылдым. Кээде кимдир бирөө мага коопсузураак экенин айткан болушу керек, мен аны азырынча унуткан жокмун. 3 -бөлүккө…

5 -кадам: Кодексти түшүнүү, 3 -бөлүк

Матрицанын уландысы, бул жерде VBдин кийинки бир нече саптары бар … 'Бул флип-флопс мамычалар,' эгерде мамыча ӨЧҮК болсо, ал убакыттын 30 пайызында КҮЙГҮЗҮЛӨТ, 'жана эгер мамыча КҮЙҮК болсо, анда ал убакыттын 30 пайызында ӨЧҮРҮЛГӨН. turnOffMax = 0.30 turnOnMax = 0.30Ар бир мамычаны 30% убакыттын өтүшү менен сандык мамычалар тасмадагыдай туш келди түрдө "түшөт". Так эмес, бирок жакын. '1-мамыча flip-flop flipMe = rnd () If ((col1 = TurnOn) жана (flipMe <turnOffMax)) Андан кийин col1 = TurnOff Else If ((col1 = TurnOff) жана (flipMe <turnOnMax)) Андан кийин col1 = TurnOn End IfThe Жогорудагы блок кийинки сандар үчүн кийинки кайталоо учурунда берилген тилкеде санды көрсөтөбүзбү же жокпу, кантип аныктайбыз. Коддо "эгер мамыча күйүп турса жана flipMe деп аталган кокус сан 30%дан аз болсо, мамычаны өчүрүңүз. Болбосо, эгер мамыча өчүк жана flipMe 30%дан аз болсо, мамычаны күйгүзүңүз." матрицанын өйдө жагында. Кошумча баскычка өтүү…

6 -кадам: Sub Key ()

Негизги ыкма төмөндө.sub баскычы (msg) "матрицадан" келген билдирүүлөрдү басып чыгарат жана themwscript.sleepти өчүрөт 1500length = len (msg) позиция = 1 үчүн wshshell. SendKeys орто (мсг, позиция, 1) wscript.sleep 250nextwscript.sleep 3000for position = 1 to wshshell. SendKeys "{BACKSPACE}" wscript.sleep 75nextend subThis метод сапты басып чыгарат "msg". Ал сиз өткөргөн нерсенин бардыгын басып чыгарат. Бул ыкма кийинчерээк коддо аталат. Биринчи FOR цикли саптын ар бир тамгасын бирден басып чыгарат жана ар бир белгинин ортосунда 250 миллисекундга тыныгат. Биз 3000 миллиске (3 секунд) уктайбыз жана мурда басып чыгарган ар бир тамга үчүн артка жазабыз, бул жолу бир аз азыраак уктайбыз. Мунун баары бар. Программанын негизги бөлүгүнө өтүңүз, ал жерде баары биригет.

7 -кадам: Негизги

Программанын негизги аткарылышы 5 тилкеде жайылган 200 бинардык цифраларды жазуу үчүн waitFor жана matrix (биз буга чейин камтылган) деп аталат. Учурдагы тутумдун колдонуучусунун аты "ойгонуу" тизмегинин бир бөлүгү катары басып чыгарылат. 4 "чектөө. Биз кийинчерээк SELECT биздин цикл өзгөрмөсүнө (loopA), ал биринчи CASE билдирүүсүнө биринчи жолу дал келет, экинчи CASE билдирүүсү экинчи жолу цикл аркылуу ж.б.у.с. биз басып чыгаргысы келген вербия жана ачкыч подрограммасы чынында басып чыгарууга чакырылган. Бул циклди иштеп чыгуунун башка көптөгөн жолдору бар, мен муну окурманга көнүгүү катары калтырам. FOR циклинен чыккандан кийин, биз дагы бир жолу сандарды басып чыгаруу үчүн матрицанын подрограммасына кайрылабыз. Коддогу комментарийде айтылгандай, эгер кааласаңыз, бул акыркы матрицаны матрицага () циклге коё аласыз, же аны чоңураак номер менен чакырсаңыз болот, ж.б. аткаруу (ар дайым жакшы практика: P). Менден үлгү алып, аны жакшыртуу ар бир адамдын көңүлүн ачат деп үмүттөнөм! Эгерде бул Instructable VBге болгон кызыгууңузду жаратса, Google бул жөнүндө көбүрөөк маалымат алуу үчүн мен айта алгандан да көп жакшы ресурстарды бере алат. Бактылуу коддоо! мартин

Сунушталууда: