Мазмұны:
- 1 -қадам: Менің кодты алыңыз
- 2 -қадам: Кодексті орындау
- 3 -қадам: Кодексті түсіну, 1 -бөлім
- 4 -қадам: Кодексті түсіну, 2 -бөлім
- 5 -қадам: Кодексті түсіну, 3 -бөлім
- 6 -қадам: ішкі кілт ()
- 7 -қадам: Негізгі
Бейне: Матрицалық код - Visual Basic: 7 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:27
Жаңа және жетілдірілген Visual Basic коды «Матрицаға» ұқсас әсерді көрсетеді, One және Zero-ды айналдырады. Содан кейін ол «Wake Up Neo» матрицалық тізбегіне дейін қысқарады, содан кейін сандарды жылжытуды жалғастырады. Мен түсінемін, бұл фильмдегі реттілік дәл осылай емес, бірақ бұл функцияны сұрайтын адамдар болды, сондықтан мен оны қостым. Менің ойымша, One және Zero бағандарының рандомизациясы - бұл кодтың ең жақсы бөлігі. Мен кейінірек не істегенімді талқылаймын. Бұл нұсқаулық Brennn10 -ның «Командалық кеңестегі матрицаға қош келдіңіз» нұсқаулығына жауап ретінде берілген. Бұл нұсқаулықты құрайтын код бастапқыда жоғарыда көрсетілген нұсқаулықта DarkJoker түсініктемесінде жарияланған кодқа негізделген. Мен кодты түсіндіруге әдейі ашық болдым, себебі мен түсіндіру үшін бірнеше сұрауларды алдым. бұл шешімді жариялады.
1 -қадам: Менің кодты алыңыз
Мен кодты төменде тіркедім. Екі файлды (startMatrix.itsabat және matrix.itsavbs) компьютердегі бір қалтада сақтаңыз және файл атауының «itsa» бөлігін алып тастаңыз, яғни startMatrix.bat және matrix.vbs деп файлдардың атын өзгертіңіз. Bat файлдары мен vbs файлдары орындалады, сондықтан мен оларды осы кеңейтімдермен жүктей алмаймын. Сондықтан оларды жергілікті түрде сақтап, атын өзгерту керек.
2 -қадам: Кодексті орындау
Егер сіз менің кодты іске қосқыңыз келсе, төмендегі нұсқауларды орындаңыз. Егер сіз машинада сіз білмейтін нәрсені орындағыңыз келмесе, сіз ақылдысыз. Сіз келесі қадамға өтуіңіз керек, онда мен кодты қарап шығамын және ешқандай қулық жасамағанымды көрсетемін, алайда, егер сіз оған қол жеткізгіңіз келсе (немесе сіз басқа біреудің машинасында болсаңыз және қамқорлық), кодты қалай бастау керек: 1-қадам: «startMatrix.bat» түймесін екі рет басыңыз. Енді сіз көрген салқындық туралы оқу үшін келесі қадамға өтіңіз.
3 -қадам: Кодексті түсіну, 1 -бөлім
Кодты басынан бастап қарастырайық. Сіз менің кодымнан VB туралы жеткілікті біле аласыз деп үміттенемін, сіз өшіресіз және VB -те меннен жақсы кодты үйренесіз:) Біріншіден, бізде 2 файл бар: bat файлы және vbs файлы. Егер сіз bat файлын өңдесеңіз, ол терезені, мәтін түсін және терезе атауын орнатқаннан кейін, ол vbs файлын орындайтынын байқайсыз. Келіңіздер, vbs файлындағы неғұрлым қызықты нәрсеге көшейік, мен мұнда тек ең қызықты код жолдарына тоқталамын. Сонымен қатар, '(таңба немесе жалғыз тырнақша) басталатын жолдарға ерекше назар аударыңыз.. Бұл түсініктемелер және орындалмайды. Matrix.vbs -тің алғашқы бірнеше жолында «Менің қате туралы хабарларымды нақты деңгейге қойыңыз» деп жазылады, бірақ сонымен бірге «Мен жасаған қателіктердің өлімге әкелуіне жол бермеңіз.» Нақты талқылау қажет емес. 5 -жол: Біздің бұлыңғыр мәлімдеме біздің кішкентай бағдарламамыздың өмірінде қолданатын барлық айнымалыларды орнатады. Бізге кейбір басқа тілдердегідей бұл айнымалылардың түрлерін немесе олардың бастапқы мәндерін жариялаудың қажеті жоқ. VB бұл сияқты «қуатты». 12 -жол: objSysInfo бізге жұмыс істейтін жүйе туралы кейбір ақпаратты жинауға мүмкіндік береді. Біз мұнда нысанды жасаймыз, ал 13 -жолда objSysInfo. UserName осы кодты орындайтын, қазір кірген пайдаланушының атын қайтарады. Бұл кейінірек «Нео» орнына қолданылады, осылайша біздің сценарийде «Оян, Мартин …» деп айтуға болады, егер ол менің машинамда болса, «Оян, Brennn10 …», егер ол Brennn10 машинасында болса және Бұл оның пайдаланушы аты еді. Жүйенің пайдаланушы атын пайдалану оны досыңыздың құлпы ашылған құрылғыға лақтыруға мүмкіндік береді және ол кодты өзгертпей автоматты түрде оның атын шығарады.
4 -қадам: Кодексті түсіну, 2 -бөлім
16 -жол: sub waitfor - бұл біздің бірінші кіші бағдарлама. Бағдарламаны кодтың басқа жерінен шақыруға болады, ол кодтың ішкі бөлігінде кодты орындайды, содан кейін бағдарламаны басқаруды шақыру кодына қайтарады. күту біздің қабығымызды орнатады. Мұны цикл ішінде «ұйқы» бар циклде жасай отырып, біз бақылауды қайтарар алдында қабықтың белсендірілуіне мүмкіндік береміз, бұл өте жақсы нәрсе. 26 -жол: ішкі матрица - біздің екінші кіші бағдарлама және параметр «элементтер» деп аталады. Бұл кіші бағдарлама кинодағыдай «құлап бара жатқандай» керемет нөмірлерді басып шығарады. Мен мұнда бірнеше нәрсені түсіндім. Оларды түсіндіре отырып, сіз менің қайдан келгенімді түсінесіз және мұны меннен жақсы жасай алатындығыңызды түсінесіз деп үміттенемін, біріншіден, сізге тек 5 баған сандары қажет деп ойлаймын, ал «элементтер» бағандар санына бөлінеді (5). Бұған кепілдік беру оңай болды, себебі кейінірек мен «матрицаға» берілген параметрлерді 200 және 100 деп жарияладым (бұл екі рет аталады). Сонымен қатар, сіз барлық 5 бағанды әдепкі бойынша қосқыңыз келеді деп ойлаймын. Менің ойымша, бұл жақсы көрінеді, бірақ егер сіз сандардың бірінші жолының қалған жолдар кездейсоқ болып көрінуін қаласаңыз, олардың бірнешеуін ЖАЛҒАН етіп өзгерте аласыз. OK, сондықтан бізде 5 баған бар, бізде 200 / Көрсетілетін 5 = 40 жол сандары (lineToWrite), және біздің барлық бағандар әдепкі бойынша қосылады. 41 -жол: біз екі «for» ілмектерін енгіземіз, олардың біріншісі (Loop A) біздің сызықтарымыз арқылы айналадыToWrite және екіншісі (Цикл 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 -қадам: ішкі кілт ()
Негізгі әдіс төменде. «Матрицалық» хабарларды басып шығаруды және оларды жоюды wwscript.sleep өшіру.sleep 250nextwscript.sleep 3000for to = 1 to wshshell. SendKeys «{BACKSPACE}» wscript.sleep 75nextend subThis әдіс жолды басып шығарады «msg». Ол сіз жіберген нәрсені басып шығарады. Бұл әдіс кейінірек кодта шақырылады. Бірінші FOR циклы жолдағы әрбір таңбаны бір -бірден басып шығарады және әр таңба арасында 250 миллисекундқа кідіреді. Содан кейін біз 3000 миллис (3 секунд) ұйықтаймыз және бұрын басып шығарған әр таңбаның артына бос орын жазамыз, бұл жолы аз ұйықтаймыз. Бағдарламаның негізгі бөлігіне өтіңіз, онда бәрі бір жерге жиналады.
7 -қадам: Негізгі
Бағдарламаның негізгі орындалуы 5 бағанаға жайылған 200 екілік цифрды орнатуға және жазуға waitFor және matrix (біз қарастырған) шақырады. Содан кейін жүйенің ағымдағы пайдаланушысының аты «ояту» тізбегінің бір бөлігі ретінде басып шығарылады, содан кейін біз FOR циклін енгіземіз, оны білеміз, себебі «1» себебінен біз тек 4 рет қайталаймыз. 4 «шектеулерге дейін. Біз содан кейін цикл айнымалысын (loopA) SELECT, ол бірінші CASE операторына бірінші рет сәйкес келеді, екінші CASE операторы цикл арқылы екінші рет және т.б. сәйкес келеді. біз басып шығарғымыз келетін сөз тіркесі және басып шығаруды жүзеге асыру үшін негізгі қосалқы бағдарлама шақырылады. Бұл циклды жобалаудың басқа да көптеген әдістері бар, мен оны оқырманға жаттығу ретінде қалдырамын. FOR циклінен шыққаннан кейін, біз тағы да сандарды басып шығару үшін матрицаның ішкі бағдарламасын шақырамыз. Кодтағы түсініктемеде айтылғандай, егер сіз қаласаңыз, матрицаның () соңғы қоңырауын циклге қоюға болады, немесе сіз оны үлкенірек нөмірмен және т. орындау (әрқашан жақсы тәжірибе: P). Барлық адам менің мысалды алып, оны жақсарта алады деп үміттенемін! Егер бұл нұсқаулық VB -ге деген қызығушылығыңызды арттырса, Google сізге бұл туралы көбірек білуге көптеген жақсы ресурстар ұсына алады. Бақытты кодтау! мартин
Ұсынылған:
BT бар 8х8 матрицалық дисплей: 5 қадам (суреттермен)
BT көмегімен 8x8 матрицалық дисплей: Мен бірнеше ай бұрын Ebay -ден (Қытай) 4x панельді 8x8 матрицаны сатып алдым, оның жоғарыдан төменге емес, жоғарыдан төменге қарай қатаң сыммен салынғанын түсінгенде, көңілім қалды. желі жазылған! 2 -қадамды қараңыз, менің ойымша, мүмкін
WiFi қосылған матрицалық шам: 6 қадам (суреттермен)
WiFi қосылған матрицалық шам: Үйде анимацияны көрсететін және басқа лампалармен синхрондауға болатын керемет шамның болуын кім қаламайды? Дұрыс, ешкім. Шам 256 жеке адрестелетін жарықдиодтардан тұрады және барлық жарықдиодты контраст болуы мүмкін
Артқы матрицалық велосипед жарығы: 5 қадам
Артқы матрицалық велосипед жарығы: бәріне сәлем! Мен әрқашан светодиодтар мен олардың жарқырауына таң қалдым, бұл өте керемет, әсіресе 8 x 8 матрицасы мен RGB светодиодты жолақтары. Мен велосипедке артқы велосипед жарығын ұзақ уақыт бойы жасағым келді. о салу үшін
ESP8266 жарықдиодты матрицалық сағат: 8 қадам (суреттермен)
ESP8266 жарықдиодты матрицалық сағат: ESP8266 жарықдиодты матрицалық сағаттар NTP серверінен WiFi арқылы уақытты синхрондау және нақты уақыттағы модульі бар әйгілі ESP8266 негізделген қарапайым жарықдиодты матрицалық сағаттар.ЖАҢА! ESP32 нұсқасы да бар
ESP32 жарықдиодты матрицалық сағат: 8 қадам
ESP32 жарықдиодты матрицалық сағат: Бұл ESP8266 светодиодты матрицалық сағат жобасының жалғасы. Бастапқы кодтың авторы оны ESP32 үшін жаңартты (schreibfaul1 арқасында үлкен рахмет!), Сондықтан мен бұрын жасаған сағатты жаңартуды шештім