สารบัญ:

Matrix Code - Visual Basic: 7 ขั้นตอน
Matrix Code - Visual Basic: 7 ขั้นตอน

วีดีโอ: Matrix Code - Visual Basic: 7 ขั้นตอน

วีดีโอ: Matrix Code - Visual Basic: 7 ขั้นตอน
วีดีโอ: Data Matrix Code สามารถบรรจุข้อมูลได้เท่าไร 2024, กรกฎาคม
Anonim
รหัสเมทริกซ์ - Visual Basic
รหัสเมทริกซ์ - Visual Basic

โค้ด Visual Basic ที่ปรับปรุงใหม่จะแสดงเอฟเฟกต์เหมือน "Matrix" โดยเลื่อน One's และ Zero's จากนั้นจะตัดเป็นซีเควนซ์ "Wake Up Neo" ของเมทริกซ์ แล้วเลื่อนตัวเลขต่อไป ฉันตระหนักดีว่านี่ไม่ใช่ลำดับขั้นตอนในภาพยนตร์ แต่มีคนถามถึงฟังก์ชันนี้ ฉันจึงเพิ่มเข้าไป ฉันคิดว่าวิธีที่ฉันสุ่มแสดงคอลัมน์ของ One's และ Zero เป็นส่วนที่เรียบร้อยที่สุดของโค้ด ฉันพูดถึงสิ่งที่ฉันทำในภายหลัง คำแนะนำนี้ตอบสนองต่อคำสั่ง "ยินดีต้อนรับสู่เมทริกซ์ใน Command Prompt" ของ 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. FYI ฉันจะพูดถึงบรรทัดของโค้ดที่น่าสนใจที่สุดที่นี่เท่านั้น นอกจากนี้ ให้จดบันทึกเฉพาะบรรทัดที่ขึ้นต้นด้วย ' (ขีดหรือเครื่องหมายอัญประกาศเดี่ยว). นี่คือความคิดเห็น และจะไม่ถูกดำเนินการ matrix.vbs สองสามบรรทัดแรกพูดว่า "ตั้งค่าข้อความแสดงข้อผิดพลาดของฉันเป็นระดับที่ชัดเจน" แต่ในขณะเดียวกัน "อย่าให้ข้อผิดพลาดใดๆ ที่ฉันทำขึ้นถึงตาย" ไม่จำเป็นต้องมีการอภิปรายจริงๆ บรรทัดที่ 5: คำสั่งที่มืดมนของเราที่นี่จะตั้งค่าตัวแปรทั้งหมดที่เราจะใช้ตลอดชีวิตของโปรแกรมเล็กๆ ของเรา เราไม่จำเป็นต้องประกาศประเภทสำหรับตัวแปรเหล่านี้ หรือค่าเริ่มต้นสำหรับตัวแปรเหล่านี้ เช่นเดียวกับที่เราอาจมีในภาษาอื่นๆ VB "ทรงพลัง" แบบนี้ บรรทัดที่ 12: objSysInfo ให้เรารวบรวมข้อมูลบางอย่างเกี่ยวกับระบบที่เรากำลังดำเนินการอยู่ เราสร้างวัตถุที่นี่ และในบรรทัดที่ 13 objSysInfo. UserName จะส่งกลับชื่อของผู้ใช้ที่เข้าสู่ระบบซึ่งกำลังเรียกใช้โค้ดนี้ จะใช้แทน "Neo" ในภายหลัง เพื่อให้สคริปต์ของเราสามารถพูดว่า "Wake up, Martin…" ถ้ามันกำลังทำงานอยู่บนเครื่องของฉัน หรือ "Wake up, Brennn10…" ถ้ามันทำงานบนเครื่องของ Brennn10 และถ้า นั่นคือชื่อผู้ใช้ของเขา การใช้ชื่อผู้ใช้ของระบบช่วยให้คุณสามารถโยนมันลงในเครื่องที่ปลดล็อกของเพื่อนคุณและจะดึงชื่อของเขาโดยอัตโนมัติโดยไม่ต้องเปลี่ยนรหัส ไปกันเลย

ขั้นตอนที่ 4: ทำความเข้าใจรหัส ตอนที่ 2

บรรทัดที่ 16: sub waitfor เป็นรูทีนย่อยแรกของเรา รูทีนย่อยสามารถเรียกได้จากตำแหน่งอื่นในโค้ด จะรันโค้ดภายในเนื้อหาของรูทีนย่อย จากนั้นจะส่งคืนการควบคุมโปรแกรมไปยังโค้ดที่เรียก waitfor ตั้งค่าเชลล์ของเราสำหรับเรา โดยการทำเช่นนี้ในลูปที่มี "สลีป" ภายในลูป เราอนุญาตให้การเปิดใช้งานเชลล์เสร็จสิ้นก่อนที่จะมีการควบคุมส่งคืน ซึ่งเป็นสิ่งที่ดีมาก บรรทัดที่ 26: เมทริกซ์ย่อยเป็นรูทีนย่อยที่สองของเรา และรับ พารามิเตอร์ที่เรียกว่า "องค์ประกอบ" รูทีนย่อยนี้พิมพ์ตัวเลขเจ๋งๆ ที่ดูเหมือนจะ "ร่วง" เหมือนกับในหนัง ฉันได้มองข้ามบางสิ่งไปในที่นี้ หวังว่าเมื่ออธิบายแล้ว คุณจะเข้าใจว่าฉันมาจากไหนและทำได้ดีกว่าฉัน ก่อนอื่น ฉันคิดว่าคุณต้องการเพียง 5 คอลัมน์ของตัวเลข และ "องค์ประกอบ" หารด้วยจำนวนคอลัมน์ (5 คอลัมน์) ลงตัว). สิ่งนี้รับประกันได้ง่ายเพราะในภายหลังฉันประกาศพารามิเตอร์ที่ส่งผ่านไปยัง "เมทริกซ์" เป็น 200 และ 100 (เรียกว่าสองครั้ง) ฉันยังถือว่าคุณต้องการเปิดทั้ง 5 คอลัมน์โดยค่าเริ่มต้น ฉันคิดว่ามันดูโอเค แต่คุณสามารถเปลี่ยนสองสามค่านี้เป็น FALSE ได้ หากคุณต้องการให้แถวแรกของตัวเลขดูเหมือนสุ่ม เพราะแถวที่เหลือจะเป็น โอเค เรามี 5 คอลัมน์ เรามี 200 / 5 = 40 บรรทัดของตัวเลขที่จะแสดง (linesToWrite) และคอลัมน์ทั้งหมดของเราเปิดอยู่โดยค่าเริ่มต้น บรรทัดที่ 41: เราป้อนลูป "for" สองอัน โดยอันแรก (Loop A) วนผ่าน linesToWrite ของเราและอันที่สอง (Loop B) ที่วนไปตามจำนวนคอลัมน์ ในลูป B เราเลือกค่าของตัวแปรลูป loopB และขึ้นอยู่กับค่านั้น เราจะประเมินคำสั่ง If-Else หากคอลัมน์ที่เป็นปัญหาเปิดใช้งาน ("TRUE" หรือ "เปิด") เราจะพิมพ์ผ่าน "wshshell. SendKeys" ค่าของ Int(Round(rnd())) ตามด้วยแท็บ มิฉะนั้น เราจะพิมพ์เฉพาะแท็บ เพื่อให้คอลัมน์ว่างเปล่า แล้วค่าของ Int(Round(rnd())) คืออะไร? rnd() ส่งคืนค่าจำนวนจุดลอยตัวแบบสุ่มระหว่าง 0.0 ถึง 1.0 Round() จะนำค่านั้นและปัดเศษให้เป็นค่าจำนวนเต็มที่ใกล้ที่สุด และ Int() แปลงผลลัพธ์เป็นจำนวนเต็ม ขั้นตอนสุดท้ายนี้ถือได้ว่าเกินกำลัง เนื่องจากการเรียก Round() ควรให้ 0 หรือ 1 แก่เรา ฉันทำไปเพียงเพราะติดเป็นนิสัย ถึงจุดหนึ่งต้องมีคนบอกฉันว่ามันปลอดภัยกว่า และเห็นได้ชัดว่าฉันยังไม่ลืมมัน ไปต่อตอนที่ 3…

ขั้นตอนที่ 5: ทำความเข้าใจรหัส ตอนที่ 3

ต่อจากเมทริกซ์ย่อยต่อไปนี้คือบรรทัดถัดไปของ VB…' คอลัมน์ flip-flop นี้ ' ดังนั้นหากคอลัมน์ปิดอยู่ คอลัมน์จะถูกเปิด 30 เปอร์เซ็นต์ของเวลาทั้งหมด ' และหากคอลัมน์เปิดอยู่ คอลัมน์นั้นจะเป็น ปิด 30 เปอร์เซ็นต์ของเวลา turnOffMax = 0.30 turnOnMax = 0.30 การสลับแต่ละคอลัมน์ 30% ของเวลาทำให้คอลัมน์ตัวเลข "ตก" ในลักษณะสุ่มคล้ายกับที่พวกเขาทำในภาพยนตร์ ไม่แม่นแต่ใกล้เคียง ' คอลัมน์ 1 flip-flop flipMe = rnd() ถ้า ((col1 = เปิด) และ (flipMe <turnOffMax)) จากนั้น col1 = ปิด อื่น ถ้า ((col1 = ปิด) และ (flipMe <turnOnMax)) จากนั้น col1 = เปิดใช้ สิ้นสุด IfThe บล็อกด้านบนจัดการวิธีที่เรากำหนดว่าจะแสดงตัวเลขในคอลัมน์ที่กำหนดระหว่างการวนซ้ำครั้งถัดไปสำหรับแถวตัวเลขถัดไปหรือไม่ รหัสจะอ่านว่า "ถ้าคอลัมน์เปิดอยู่ และหมายเลขสุ่มที่เรียกว่า flipMe น้อยกว่า 30% ให้ปิดคอลัมน์ มิฉะนั้น หากคอลัมน์ปิดอยู่และ flipMe น้อยกว่า 30% ให้เปิดคอลัมน์" ขึ้นเมทริกซ์ย่อย ไปที่คีย์ย่อย…

ขั้นตอนที่ 6: คีย์ย่อย ()

วิธีคีย์อยู่ด้านล่าง คีย์ย่อย (msg)' พิมพ์ข้อความ "เมทริกซ์" และลบพวกเขาwscript.sleep 1500length = len(msg) สำหรับตำแหน่ง = 1 ถึงความยาว wshshell. SendKeys กลาง (msg ตำแหน่ง 1) wscript.sleep 250nextwscript.sleep 3000for position = 1 ถึงความยาว wshshell. SendKeys "{BACKSPACE}" wscript.sleep 75nextend subThis method พิมพ์สตริง "msg" มันจะพิมพ์สิ่งที่คุณผ่านมัน วิธีนี้จะเรียกในภายหลังในโค้ด วง FOR แรกจะพิมพ์อักขระแต่ละตัวในสตริง ทีละตัว และหยุดชั่วคราวเป็นเวลา 250 มิลลิวินาทีระหว่างอักขระแต่ละตัว จากนั้นเรานอน 3000 มิลลิวินาที (3 วินาที) และเขียนแบ็คสเปซสำหรับอักขระแต่ละตัวที่เราพิมพ์ก่อนหน้านี้ โดยคราวนี้พักให้น้อยลงเล็กน้อย นั่นคือทั้งหมดที่มี เข้าสู่เนื้อหาหลักของโปรแกรมที่ซึ่งทุกอย่างมารวมกัน

ขั้นตอนที่ 7: หลัก

การดำเนินการหลักของโปรแกรมเรียก waitFor และเมทริกซ์ (ซึ่งเราได้กล่าวถึงไปแล้ว) เพื่อตั้งค่าทุกอย่างและเขียนเลขฐานสอง 200 หลัก กระจายไปทั่ว 5 คอลัมน์ จากนั้นชื่อของผู้ใช้ระบบปัจจุบันจะถูกจับและจัดการเพื่อพิมพ์ออกมาเป็นส่วนหนึ่งของลำดับ "ปลุก" จากนั้นเราเข้าสู่ลูป FOR ซึ่งเรารู้ว่าเราจะทำซ้ำเพียง 4 ครั้งเท่านั้นเนื่องจาก "1 ข้อจำกัด 4" จากนั้นเราจะเลือกตัวแปรลูปของเรา (loopA) ซึ่งตรงกับคำสั่ง CASE แรกในครั้งแรกผ่าน คำสั่ง CASE ที่สองในครั้งที่สองผ่านลูป ฯลฯ การวนซ้ำแต่ละครั้งของลูป myString ถูกตั้งค่าเป็นการแสดงสตริงที่ถูกต้องของ การใช้คำฟุ่มเฟือยที่เราต้องการพิมพ์ และรูทีนย่อยของคีย์ถูกเรียกให้ทำการพิมพ์จริงๆ มีวิธีอื่นอีกมากมายในการออกแบบลูปนี้ และฉันจะปล่อยให้มันเป็นแบบฝึกหัดสำหรับผู้อ่าน เมื่อเราออกจากลูป FOR เราจะเรียกรูทีนย่อยของเมทริกซ์อีกครั้งเพื่อพิมพ์ตัวเลขเพิ่มเติม ตามที่ความคิดเห็นในโค้ดระบุไว้ คุณสามารถวางการเรียกสุดท้ายนี้ไปยัง matrix() ในลูปได้หากต้องการ หรืออาจเรียกด้วยตัวเลขที่มากกว่า เป็นต้น สุดท้ายการเรียก quit() ของเราจะยกเลิกโปรแกรม การดำเนินการ (แนวปฏิบัติที่ดีเสมอ:P) หวังว่าทุกคนจะสนุกกับการยกตัวอย่างของฉันและทำให้ดีขึ้น! หากคำแนะนำนี้กระตุ้นความอยากรู้อยากเห็นของคุณกับ VB Google สามารถให้แหล่งข้อมูลที่ดีมากมายเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้มากกว่าที่ฉันจะบอกคุณได้ มีความสุขในการเข้ารหัส! มาร์ติน

แนะนำ: