Daftar Isi:

Kode Matriks - Visual Basic: 7 Langkah
Kode Matriks - Visual Basic: 7 Langkah

Video: Kode Matriks - Visual Basic: 7 Langkah

Video: Kode Matriks - Visual Basic: 7 Langkah
Video: Pemrograman Aplikasi Sederhana Matriks Menggunakan Visual Studio (Visual Basic) 2024, Juli
Anonim
Kode Matriks - Visual Basic
Kode Matriks - Visual Basic

Kode Visual Basic yang baru dan lebih baik akan menampilkan efek seperti "Matrix", dengan menggulirkan One dan Zero. Itu kemudian memotong ke urutan Matrix "Wake Up Neo", dan kemudian terus menggulir angka. Saya menyadari ini bukan persis seperti urutan dalam film, tetapi ada orang yang meminta fungsi ini, jadi saya menambahkannya. Saya pikir cara saya mengacak tampilan kolom One dan Zero adalah bagian kode yang paling rapi. Saya membahas persis apa yang saya lakukan nanti. Instruksi ini adalah sebagai tanggapan terhadap Instruksi "Selamat Datang di Matrix di Command Prompt" Brennn10. Kode yang membentuk Instructable ini awalnya didasarkan pada kode yang diposting dalam komentar oleh DarkJoker pada Instructable di atas. Saya sengaja agak eksplisit dengan penjelasan kode saya karena saya mendapatkan beberapa permintaan untuk klarifikasi sejak saya pertama kali diposting solusi ini.

Langkah 1: Ambil Kode Saya

Saya telah melampirkan kode saya di bawah ini. Simpan kedua file (startMatrix.itsabat dan matrix.itsavbs) di dalam folder yang sama pada mesin Anda, dan hapus bagian "itsa" dari nama file, yaitu ganti nama file menjadi startMatrix.bat dan matrix.vbs. File bat dan file vbs dapat dieksekusi, dan oleh karena itu saya tidak dapat mengunggahnya dengan ekstensi tersebut di sini. Inilah sebabnya mengapa Anda harus menyimpan dan mengganti namanya secara lokal.

Langkah 2: Menjalankan Kode

Jika Anda ingin menjalankan kode saya, ikuti petunjuk di bawah ini. Jika Anda tidak ingin menjalankan sesuatu di mesin Anda yang tidak Anda ketahui, Anda pintar. Anda harus melanjutkan ke langkah berikutnya, di mana saya menelusuri kode dan menunjukkan kepada Anda bahwa saya tidak melakukan sesuatu yang licik. Namun, jika Anda hanya ingin melakukannya (atau Anda menggunakan komputer orang lain dan tidak peduli), berikut cara memulai kode: Langkah 1: klik dua kali pada "startMatrix.bat". Itu dia. Sekarang lanjutkan ke langkah berikutnya untuk membaca tentang kesejukan yang baru saja Anda lihat.

Langkah 3: Memahami Kode, Bagian 1

Mari kita lihat kodenya, mulai dari awal. Mudah-mudahan Anda bisa belajar cukup tentang VB dari kode saya sehingga Anda akan pergi dan belajar bagaimana kode di VB lebih baik dari saya:) Jadi hal pertama yang pertama, kami memiliki 2 file: file bat dan file vbs. Jika Anda mengedit file bat, Anda akan melihat bahwa file vbs dieksekusi, setelah mengatur jendela, warna teks, dan judul jendela. Mari kita beralih ke hal-hal yang lebih menarik di file vbs. FYI, saya hanya akan menyentuh baris kode yang paling menarik di sini. Juga, perhatikan baris yang dimulai dengan ' (centang, atau tanda kutip tunggal). Ini adalah komentar, dan TIDAK AKAN DILAKSANAKAN. Beberapa baris pertama dari matrix.vbs mengatakan "Setel pesan kesalahan saya ke tingkat eksplisit" tetapi pada saat yang sama "Jangan biarkan kesalahan yang saya buat berakibat fatal." Tidak diperlukan diskusi nyata. Baris 5: Pernyataan redup kami di sini mengatur semua variabel yang akan kami gunakan sepanjang umur program kecil kami. Kita tidak perlu mendeklarasikan tipe untuk variabel ini, atau nilai awal untuk variabel tersebut, seperti yang mungkin kita lakukan dalam beberapa bahasa lain. VB "kuat" seperti ini. Baris 12: objSysInfo memungkinkan kita mengumpulkan beberapa informasi tentang sistem yang kita jalankan. Kami membuat objek di sini, dan pada Baris 13, objSysInfo. UserName mengembalikan nama pengguna yang saat ini masuk yang mengeksekusi kode ini. Ini akan digunakan nanti sebagai pengganti "Neo", sehingga Skrip kami dapat mengatakan "Bangun, Martin…" jika dijalankan di mesin saya, atau "Bangun, Brennn10…" jika dijalankan di mesin Brennn10 dan jika itu adalah nama pengguna nya. Menggunakan nama pengguna Sistem memungkinkan Anda untuk melemparkannya ke mesin teman Anda yang tidak terkunci dan itu akan menarik namanya secara otomatis, tanpa harus mengubah kodenya. Mari kita lanjutkan.

Langkah 4: Memahami Kode, Bagian 2

Baris 16: sub waitfor adalah subrutin pertama kami. Sebuah subrutin dapat dipanggil dari tempat yang berbeda dalam kode, akan mengeksekusi kode di dalam tubuh subrutin, dan kemudian akan mengembalikan kontrol program ke kode panggilan. waitfor menyiapkan shell kami untuk kami. Dengan melakukan ini dalam satu lingkaran dengan "tidur" di dalam lingkaran, kami mengizinkan aktivasi shell selesai sebelum kontrol dikembalikan, yang merupakan hal yang sangat baik. Baris 26: sub matriks adalah subrutin kedua kami, dan mengambil parameter yang disebut "elemen". Subrutin ini melakukan pencetakan angka keren yang tampak "jatuh", seperti di film. Saya telah menerima beberapa hal begitu saja di sini. Mudah-mudahan dengan menjelaskannya, Anda akan mengerti dari mana saya berasal dan dapat melakukannya lebih baik daripada saya. Pertama, saya berasumsi bahwa Anda hanya menginginkan 5 kolom angka, dan "elemen" dapat dibagi dengan jumlah kolom (5). Ini mudah dijamin karena nanti saya menyatakan parameter yang diteruskan ke "matriks" menjadi 200 dan 100 (disebut dua kali). Saya juga berasumsi bahwa Anda ingin semua 5 kolom diaktifkan secara default. Saya pikir itu terlihat OK, tetapi Anda dapat mengubah beberapa di antaranya menjadi FALSE jika Anda ingin baris angka pertama tampak acak seperti baris lainnya. Oke, jadi kami memiliki 5 kolom, kami memiliki 200 / 5 = 40 baris angka untuk ditampilkan (linesToWrite), dan semua kolom kita diaktifkan secara default. Baris 41: kita masuk ke dalam dua loop "untuk", yang pertama (Loop A) berputar melalui linesToWrite dan yang kedua (Loop B) yang berputar melalui jumlah kolom. Dalam Loop B, kita memilih nilai dari variabel loop loopB, dan bergantung pada nilainya, kita mengevaluasi pernyataan If-Else. Jika kolom tersebut Diaktifkan ("TRUE", atau "diaktifkan"), kami akan mencetak, melalui "wshshell. SendKeys", nilai Int(Round(rnd())), diikuti oleh tab. Jika tidak, kita hanya akan mencetak tab, sehingga kolom tampak kosong. Jadi berapa nilai Int(Round(rnd()))? rnd() mengembalikan angka floating point acak antara 0,0 dan 1,0, Round() akan mengambil nilai itu dan membulatkannya ke nilai Integer terdekat, dan Int() memberikan hasilnya ke Integer. Langkah terakhir ini dapat dianggap berlebihan, karena panggilan Round() seharusnya memberi kita 0 atau 1. Saya melakukannya hanya karena kebiasaan. Pada titik tertentu seseorang pasti mengatakan kepada saya bahwa itu lebih aman, dan saya tampaknya belum melupakannya. Ke Bagian 3…

Langkah 5: Memahami Kode, Bagian 3

Melanjutkan sub Matriks, berikut adalah beberapa baris VB berikutnya…' Kolom flip-flop ini, ' jadi jika kolom OFF, maka akan ON 30 persen dari waktu, ' dan jika kolom ON, itu akan menjadi dimatikan 30 persen dari waktu. turnOffMax = 0,30 turnOnMax = 0,30 Mengalihkan setiap kolom 30% dari waktu membuat kolom nomor "jatuh" secara acak mirip dengan yang mereka lakukan di film. Tidak tepat, tapi dekat. ' Kolom 1 flip-flop flipMe = rnd() If ((col1 = TurnOff) dan (flipMe < turnOffMax)) Kemudian col1 = TurnOff Else If ((col1 = TurnOff) dan (flipMe < turnOnMax)) Kemudian col1 = TurnOn End IfThe blok di atas menangani bagaimana kita menentukan apakah kita akan menampilkan angka di kolom yang diberikan selama iterasi berikutnya, untuk baris angka berikutnya. Kode berbunyi "jika kolom aktif, dan nomor acak yang disebut flipMe kurang dari 30%, matikan kolom. Jika tidak, jika kolom mati dan flipMe kurang dari 30%, nyalakan kolom." Itu membungkus naik sub Matriks. Ke sub kunci…

Langkah 6: Sub Kunci()

Metode kuncinya ada di bawah.sub key(msg)' mencetak pesan "matriks", dan menghapusnyawscript.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 subMetode ini mencetak string "msg". Itu akan mencetak apa pun yang Anda lewati. Metode ini dipanggil nanti dalam kode. Perulangan FOR pertama mencetak setiap karakter dalam string, satu per satu, dan berhenti selama 250 milidetik di antara setiap karakter. Kami kemudian tidur selama 3000 milis (3 detik) dan menulis spasi mundur untuk setiap karakter yang kami cetak sebelumnya, tidur kali ini lebih sedikit. Itu saja. Ke bagian utama program, di mana semuanya menyatu.

Langkah 7: Utama

Eksekusi utama dari program ini memanggil waitFor dan matriks (yang telah kita bahas) untuk mengatur semuanya dan menulis 200 digit biner, tersebar di 5 kolom. Nama pengguna sistem saat ini kemudian diambil dan dimanipulasi untuk dicetak sebagai bagian dari urutan "bangun". Kami kemudian memasukkan loop FOR, yang kami tahu kami hanya akan mengulangi lebih dari 4 kali karena "1 Untuk 4" kendala. Kami kemudian SELECT pada variabel loop kami (loopA), yang cocok dengan pernyataan CASE pertama kali pertama, pernyataan CASE kedua untuk kedua kalinya melalui loop, dll. Setiap iterasi dari loop, myString diatur ke representasi string yang benar dari verbiage yang ingin kita cetak, dan subrutin kunci dipanggil untuk benar-benar melakukan pencetakan. Jelas ada banyak cara lain untuk merancang loop ini, dan saya akan menyerahkannya sebagai latihan kepada pembaca. Setelah kita keluar dari loop FOR, kita sekali lagi memanggil subrutin matriks untuk mencetak lebih banyak angka. Seperti yang dikatakan oleh komentar dalam kode, Anda dapat menempatkan panggilan terakhir ini ke matrix() dalam satu lingkaran jika Anda mau, atau Anda bisa memanggilnya dengan nomor yang lebih besar, dll. Terakhir, panggilan kita ke quit() membatalkan program eksekusi (selalu praktik yang baik: P). Semoga semua orang senang mengambil contoh saya dan membuatnya lebih baik! Jika Instruksi ini telah menggelitik rasa ingin tahu Anda dengan VB, Google dapat menyediakan banyak sumber daya yang bagus untuk mempelajari lebih lanjut tentangnya daripada yang dapat saya katakan kepada Anda. Selamat mengkode! martin

Direkomendasikan: